Tại sao các dev thường ghét PHP?

PHP là ngôn ngữ được sử dụng rộng rãi nhất trên thế giới trong lập trình web. Nó cũng bị ghét nhất. Nhưng tại sao nhiều developer lại ghét nó đến vậy? Hôm nay chúng ta hãy cùng tìm hiểu lý do xem chúng có thuyết phục không nhé ^_^
Tại sao các dev thường ghét PHP?
Tại sao các dev thường ghét PHP?

Ghét vì đam mê

Nếu mình nói rằng PHP bị cả thế giới ghét bỏ thì đó không phải là ý kiến cá nhân của mình. Trong cuộc khảo sát mới nhất trên stackoverflow, các developer từ khắp nơi trên thế giới đã xếp PHP vào top 5 ngôn ngữ đáng sợ nhất. Cuộc khảo sát mới nhất của Hired đưa nó vào top 2 bị ghét nhất. Còn rất nhiều thứ nữa và mình thậm chí không nói về những gì đang diễn ra trên Reddit.

Mình đã làm qua rất nhiều dự án với Laravel, và mình thích cũng rất thích Laravel. Thành thật mà nói, nó khá tốt. Lúc ấy mình đã tự đặt câu hỏi: tại sao mọi người lại có quá nhiều ác cảm với PHP?

 

Quá khứ rắc rối của PHP

Để hiểu điều gì sẽ xảy ra tiếp theo, chúng ta có thể cần xem lại lịch sử một chút.

Năm 1994, Rasmus Lerdorf đang phát triển một bộ tookit bằng C. Bộ công cụ này được sử dụng để quản lý trang web cá nhân của anh ấy. Rasmus làm điều đó chỉ vì nhu cầu của chính mình vào thời điểm đó. Anh ta không hề muốn biến nó thành một ngôn ngữ lập trình. Không có gì trong bộ công cụ này được thiết kế để trở thành một ngôn ngữ lập trình.

Một năm sau, Rasmus phát hành bộ công cụ mã nguồn mở này được gọi là: PHP / FI. Và nó trông như thế này:

<!--include /text/header.html-->

<!--getenv HTTP\_USER\_AGENT-->
<!--ifsubstr $exec\_result Mozilla-->
  Hey, you are using Netscape!<p>
<!--endif-->

<!--sql database select \* from table where user='$username'-->
<!--ifless $numentries 1-->
  Sorry, that record does not exist<p>
<!--endif exit-->
  Welcome <!--$user-->!<p>
  You have <!--$index:0--> credits left in your account.<p>

<!--include /text/footer.html-->

 

Đối với phần còn lại của câu chuyện:

  • Code được tiếp quản bởi một nhóm phát triển và PHP / FI2 được phát hành vào năm 1997.
  • Năm 1998, một phần core được viết lại, sau đó PHP3 được phát hành.
  • Năm 1999, phần core của PHP được viết lại hoàn toàn để tạo ra Zend.
  • PHP4 tiếp nối vào năm tiếp theo và PHP5 được phát hành vào năm 2004 với Zend2.
  • PHP6 đã bị hủy bỏ vì quá trình phát triển đã biến nó thành một đống hổ lốn.
  • PHP7 được phát hành vào năm 2015 sau một bản refactor core siêu to khổng lồ.

Nhưng ban đầu, Rasmus chỉ đang code thứ của riêng mình. Năm 2003, anh ấy đã thực hiện một cuộc phỏng vấn và kể một số điều khó tin.

Tôi thực sự không thích code. Tôi đã xây dựng công cụ này để code ít hơn, và cũng để tôi tái sử dụng code dễ dàng hơn… Tôi không biết làm thế nào để dừng nó lại, tôi chưa bao giờ có ý định viết một ngôn ngữ lập trình […]. Tôi không biết làm thế nào để viết một ngôn ngữ lập trình cả [...].

Hoang Mang VL

Mẹ nó, thật sự là méo hiểu chuyện gì đang xảy ra - Rasmus =)).

 

Thiếu nhất quán và thiết kế tồi

Các developer ghét PHP vì nó là một ngôn ngữ không nhất quán về mặt kỹ thuật đi kèm với một thiết kế tồi tệ. Khi bạn so sánh nó với các ngôn ngữ khác, sự tương phản là rõ ràng.

Nếu sau khi tìm hiểu về nó, bạn vẫn không thể thừa nhận rằng PHP có một số vấn đề, thôi toang - PHP đã trở thành tín ngưỡng của bạn, và thuyết phục một kẻ cuồng tín là điều bất khả thi.

PHP Best Practices

Sử dụng PHP, rất dễ tạo ra smell code. Các ngôn ngữ khác có nhiều phương pháp hạn chế điều này hơn. Chúng ta cũng thấy rất nhiều vấn đề về bảo mật với PHP.

Tuy nhiên, bạn sẽ không gặp lỗ hổng bảo mật hay phải chịu cảnh smell code nếu bạn viết code PHP đúng cách. Các developer ghét PHP vì họ có nhiều khả năng gặp lỗi khi làm việc với một ngôn ngữ có quá ít ràng buộc.

 

Bị ghét bởi vì quá thành công

Có một yếu tố quan trọng khác xung quanh sự thù hận này. Các developer ghét PHP vì nó được sử dụng ở mọi nơi. Blog này cũng đang chạy trên PHP7 - Laravel. PHP giúp mình thực hiện công việc một cách đơn giản.

Bản thân ngôn ngữ không phải là tốt nhất, nhưng ai quan tâm chứ? Nó đáp ứng nhu cầu của mình một cách nhanh chóng và dễ tiếp cận. Cũng vì lý do này mà 80% web chạy bằng PHP.

Với sự ra đời của WordPress, thứ thống trị Internet theo đúng nghĩa đen, hầu hết các developer mà mình quen đều sẽ từng chơi với PHP.

developers-hate-php

Bên cạnh đó, mình đang nói với bạn như thể ngôn ngữ này chỉ có thể làm một vài website đơn giản như cái blog này của mình, nhưng rõ ràng không phải như vậy.

Facebook, Wikipedia, Yahoo, Flickr, Tumblr tất cả các trang web này đều chạy bằng PHP và chào đón hàng triệu người dùng mỗi tháng mà vẫn phẻ re. PHP đã và sẽ làm rất tốt điều này trong một thời gian dài.

 

Tương lai phát triển

Tầm năm 2011, lúc mình mới bắt đầu lên TP HCM đi học, mình đã nghe nói:

PHP sắp chết rồi, mày học nó làm gì? 

Hay một vài câu nói mông lung hơn:

PHP là cái thứ ngôn ngữ vừa chậm chạp lại vừa cẩu thả. Học nó làm gì cho tốn thời gian?

Oh ho. Vậy mà nó vẫn ở đây. Bất chấp thời gian và công nghệ mới nhất, nó vẫn chưa chết.

Thực sự mà nói, một công nghệ chỉ thực sự chết đi "khi đã không còn tương lai phát triển" hoặc "không còn ai sử dụng nó nữa".

Trong suy nghĩ của nhiều developer, PHP vẫn ở phiên bản 4 - khi ngôn ngữ này còn không ổn định, hiệu suất cùi bắp và không hỗ trợ OOP. Các developer ghét PHP vì họ tin rằng ngôn ngữ này đã quá trì trệ trong suốt hơn 20 năm qua. Nhưng PHP ngày nay đã khác xa với PHP4.

PHP7 nhanh hơn Python và Ruby. PHP cũng hỗ trợ strongly typed nếu bạn muốn.

Công cụ cũng đang phát triển với các bộ static parsers đã xuất hiện trong những năm gần đây.

Các framework như Laravel, Symfony hoặc Zend buộc bạn phải follow kiến trúc chuẩn.

Các phiên bản mới được phát hành hàng năm với một lịch trình chính xác.

PHP7.4 hiện tại có hiệu suất thậm chí còn cao hơn.

Mình sẽ không liệt kê mọi thứ đang xảy ra trong PHP hiện tại vì quá dài. Nếu bạn muốn biết mọi thứ mình mời bạn đọc bài viết này. Đã đến lúc thay đổi cách nhìn của bạn về thứ ngôn ngữ không liên quan gì đến nó trước đây.

omg thank you

PHP tuy còn nhiều điểm hạn chế, nhưng thực sự nó vẫn có rất nhiều thứ tốt khác và phù hợp cho hầu hết thể loại websites.

Với việc miễn phí bộ .NET Core đến từ Microsoft, rất nhiều developer lo lắng về vị thế và nhu cầu của PHP trong tương lai, nhưng thực sự mà nói điều đó thật sự rất khó, ít nhất là trong tương lai gần.

Hầu hết các developer ghét PHP đều ghét nó vì chủ nghĩa hoàn hảo hoặc thiếu hiểu biết. Dù bằng cách nào thì điều đó cũng thật ngu ngốc. Bạn phải chọn một công nghệ dựa trên những gì bạn cần. PHP rất hữu ích và mạnh mẽ trong nhiều trường hợp. Nếu bạn loại bỏ nó chỉ vì danh tiếng của nó (trước đó) thì chắc chắn không phải là một ý kiến hay.

Comments

Mục lục

Bài viết nổi bật

PHP là ngôn ngữ được sử dụng rộng rãi nhất trên thế giới trong lập trình web. Nó cũng bị ghét nhất. Nhưng tại sao nhiều developer lại ghét nó đến vậy? Hôm nay chúng ta hãy cùng tìm hiểu lý do xem chúng có thuyết phục không nhé ^_^
Ở bài viết này mình sẽ hướng dẫn bạn bắt đầu xây dựng một ứng dụng HMVC với Laravel, và tận dụng sức mạnh của Composer khi quản lí modules.
Trong quá trình làm việc với Laravel Eloquent ORM, chắc hẳn các bạn từng thực hiện khá nhiều tác vụ lặp đi lặp lại - mà bạn không hề biết Laravel đã hỗ trợ sẵn. Thông qua vài mẹo và thủ thuật nhỏ trong bài viết này, mình hi vọng sẽ giúp các bạn giảm bớt sự phức tạp khi viết code cũng như bớt nhàm chán khi thực hiện các tác vụ lặp đi lặp lại theo cách thông thường.
Có khá nhiều bạn đã yêu cầu mình một bài viết về Repository Design Pattern. Vậy mục đích của nó là gì? Nó có thực sự cần thiết cho ứng dụng của bạn hay không? Những điểm mạnh, điểm yếu của nó là gì? Chúng ta cùng đi sâu tìm hiểu qua bài viết này nhé.
Như đã được thông báo vào năm 2018, React Native đã và đang được đội ngũ phát triển của Facebook nỗ lực tái kiến trúc nhằm giúp nền tảng này trở nên mạnh mẽ hơn và giải quyết một số vấn đề phổ biến mà các nhà phát triển đã gặp phải trong vài năm qua.

Related posts

Redux là một framework quản lý state dựa trên ý tưởng: tất cả các state của ứng dụng sẽ được lưu xuống một global state và sử dụng các reducer function để tương tác với chúng.
Styled-Components là một thư viện giúp bạn tổ chức và quản lý styles trong các dự án sử dụng React tuân theo đề xuất từ Facebook.
Decorators trong Typescript
485
Các bạn dev nào từng làm Angular chắc sẽ khá quen thuộc với Decorators đúng không? Nhưng bạn thật sự đã hiểu rõ về nó hay chưa? Chúng ta hãy cùng nhau ôn bài một tí nhé ^_^
Là developer, chúng ta luôn tìm cách để tiết kiệm thời gian cho các dự án của mình. Đó là lý do tại sao các thư viện được tạo ra để giảm bớt các khó khăn khi triển khai những thứ lặp đi lặp lại. Với các frontend framework như React, việc chia sẻ chức năng chung cho các dự án khác nhau trở nên dễ dàng hơn bao giờ hết.
Snappy là một thư viện PHP cho phép tạo các thumnails, snapshots và PDF từ URL hoặc trang HTML. Tác giả Barryvdh đã viết thư viện Laravel Snappy giúp việc tích hợp với Laravel dễ dàng hơn.
Bạn có thể sử dụng tính năng kiểm tra kiểu dữ liệu của Typescript để xác định các interface cho các components, nhằm chắc chắn rằng component của bạn chỉ nhận được các thông tin đầu vào chính xác.
Bài viết này cung cấp một cái nhìn tổng quan ngắn gọn về TypeScript, tập trung vào hệ thống kiểu dữ liệu của nó.
Hooks là một tính năng bổ sung mới từ React 16.8 trở đi. Chúng cho phép bạn sử dụng State và các tính năng khác của React mà không cần viết một class.
Giới thiệu series react
327
Một vài kiến thức cơ bản cũng như nâng cao mà mình sẽ tổng hợp lại trong quá trình làm việc cũng như self learning
JWT Tokens là một cách thức lưu trữ thông tin xác thực hiệu quả, nhưng làm cách nào để chúng ta có thể giúp chúng an toàn hơn? Có 2 cách thường dùng để lưu trữ JWT Tokens là LocalStorage và Cookies. Bây giờ chúng ta sẽ bắt đầu "mổ xẻ" các ưu - nhược điểm của mỗi loại nhé.
Flexbox toàn tập
1259
Bài viết này sẽ hướng dẫn cho bạn mọi thứ về flexbox, bao gồm tất cả các thuộc tính cho phần tử cha (flex container) và phần tử con (flex items).
Như đã được thông báo vào năm 2018, React Native đã và đang được đội ngũ phát triển của Facebook nỗ lực tái kiến trúc nhằm giúp nền tảng này trở nên mạnh mẽ hơn và giải quyết một số vấn đề phổ biến mà các nhà phát triển đã gặp phải trong vài năm qua.

Tin mới nhất

Redux là một framework quản lý state dựa trên ý tưởng: tất cả các state của ứng dụng sẽ được lưu xuống một global state và sử dụng các reducer function để tương tác với chúng.
Styled-Components là một thư viện giúp bạn tổ chức và quản lý styles trong các dự án sử dụng React tuân theo đề xuất từ Facebook.
Decorators trong Typescript
485
Các bạn dev nào từng làm Angular chắc sẽ khá quen thuộc với Decorators đúng không? Nhưng bạn thật sự đã hiểu rõ về nó hay chưa? Chúng ta hãy cùng nhau ôn bài một tí nhé ^_^
PHP là ngôn ngữ được sử dụng rộng rãi nhất trên thế giới trong lập trình web. Nó cũng bị ghét nhất. Nhưng tại sao nhiều developer lại ghét nó đến vậy? Hôm nay chúng ta hãy cùng tìm hiểu lý do xem chúng có thuyết phục không nhé ^_^
Là developer, chúng ta luôn tìm cách để tiết kiệm thời gian cho các dự án của mình. Đó là lý do tại sao các thư viện được tạo ra để giảm bớt các khó khăn khi triển khai những thứ lặp đi lặp lại. Với các frontend framework như React, việc chia sẻ chức năng chung cho các dự án khác nhau trở nên dễ dàng hơn bao giờ hết.
Snappy là một thư viện PHP cho phép tạo các thumnails, snapshots và PDF từ URL hoặc trang HTML. Tác giả Barryvdh đã viết thư viện Laravel Snappy giúp việc tích hợp với Laravel dễ dàng hơn.
IRAC (Issue - Rule - Analysis - Conclusion) là một phương pháp phổ biến và quen thuộc với sinh viên luật và dân luật nói chung. Cá nhân mình thấy phương pháp này khá hay và hoàn toàn có thể áp dụng vào bất cứ công việc hoặc ngành nghề nào.
Bạn có thể sử dụng tính năng kiểm tra kiểu dữ liệu của Typescript để xác định các interface cho các components, nhằm chắc chắn rằng component của bạn chỉ nhận được các thông tin đầu vào chính xác.
Bài viết này cung cấp một cái nhìn tổng quan ngắn gọn về TypeScript, tập trung vào hệ thống kiểu dữ liệu của nó.
Hooks là một tính năng bổ sung mới từ React 16.8 trở đi. Chúng cho phép bạn sử dụng State và các tính năng khác của React mà không cần viết một class.
Giới thiệu series react
327
Một vài kiến thức cơ bản cũng như nâng cao mà mình sẽ tổng hợp lại trong quá trình làm việc cũng như self learning
JWT Tokens là một cách thức lưu trữ thông tin xác thực hiệu quả, nhưng làm cách nào để chúng ta có thể giúp chúng an toàn hơn? Có 2 cách thường dùng để lưu trữ JWT Tokens là LocalStorage và Cookies. Bây giờ chúng ta sẽ bắt đầu "mổ xẻ" các ưu - nhược điểm của mỗi loại nhé.
Redux là một framework quản lý state dựa trên ý tưởng: tất cả các state của ứng dụng sẽ được lưu xuống một global state và sử dụng các reducer function để tương tác với chúng.
Styled-Components là một thư viện giúp bạn tổ chức và quản lý styles trong các dự án sử dụng React tuân theo đề xuất từ Facebook.
Decorators trong Typescript
485
Các bạn dev nào từng làm Angular chắc sẽ khá quen thuộc với Decorators đúng không? Nhưng bạn thật sự đã hiểu rõ về nó hay chưa? Chúng ta hãy cùng nhau ôn bài một tí nhé ^_^
PHP là ngôn ngữ được sử dụng rộng rãi nhất trên thế giới trong lập trình web. Nó cũng bị ghét nhất. Nhưng tại sao nhiều developer lại ghét nó đến vậy? Hôm nay chúng ta hãy cùng tìm hiểu lý do xem chúng có thuyết phục không nhé ^_^
Là developer, chúng ta luôn tìm cách để tiết kiệm thời gian cho các dự án của mình. Đó là lý do tại sao các thư viện được tạo ra để giảm bớt các khó khăn khi triển khai những thứ lặp đi lặp lại. Với các frontend framework như React, việc chia sẻ chức năng chung cho các dự án khác nhau trở nên dễ dàng hơn bao giờ hết.