Thứ Tư, 29 tháng 4, 2009

Sự tàn lụi của PHP

Mặc định rằng các bạn đang đọc bài này là những người làm trong ngành nên tôi sẽ không giải thích hay ghi chú những khái niệm phổ thông. Mặt khác, lý lẽ trong bài viết này chỉ phản ánh quan điểm của cá nhân tôi, không đại diện cho ai hay tổ chức nào khác.

---

Lịch sử ngành công nghiệp máy tính & mạng đã chứng minh PHP là một trong số những ngôn ngữ mạnh & linh động nhất trên nền Web và cũng không quá khó để thành thục ở mức phổ thông. Được phát triển và biết đến từ những năm cuối của thập kỷ trước, PHP đã đạt được sự tăng trưởng đáng kinh ngạc so với các ngôn ngữ lập trình khác.

 

[caption id="" align="aligncenter" width="433" caption="PHP Timeline"]PHP Timeline[/caption]

 

 

Nhìn biểu đồ trên, ta thấy con đường đi lên của PHP là theo hướng phát triển truyền thống, tức là Thiết kế -> sử dụng -> chỉnh sửa -> lớn mạnh -> phát triển. Điều thú vị là cho đến nay, rất nhiều các sản phẩm được phổ biến rộng rãi cũng đi theo con đường trên như các nền tảng .NET, Java hay Linux.

Ta lần lượt điểm qua một số điểm mẫu chốt sau

Vòng đời

Một lần nữa, nhắc lại thế mạnh của PHP trên nền web chính là tốc độ (phát triển & thực thi), nhẹ & dễ học. Bên cạnh đó, do đặc tính mã nguồn mở (theo giấy phép PHP) cũng như sự đổi mới về phong cách khi ra đời, PHP sở hữu rất nhiều thứ quý giá

 

  • Cộng đồng lớn. Khoản này vô đối. Luôn có những guru sẵn sàng chia sẻ kinh nghiệm & kiến thức, hướng dẫn những người mới và giải đáp thắc mắc.

  • Thư viện, cả nội tại và mở rộng của PHP, có chứa số lượng function cực lớn được đóng góp bởi những người tình nguyện. Con số vào khoảng 700 buit-in functions và uncountable external functions (hoangnd tính toán).

  • Framework đa dạng về số lượng cũng như chất lượng, thậm chí đa dạng cả về mô hìnhmục đích sử dụng.


 

Sự mở rộng và phát triển

 

  • Khái niệm về namespace. .NET đã có từ lâu, Java cũng có khái niệm package gần tương đương, và bây giờ chúng ta chứng kiến PHP. Đành rằng namespace ra đời với mục đích cơ bản là giúp lập trình viên dễ tổ chức và quản lý code hơn, nhưng với PHP thì tôi cho rằng là một sự ôm đồm. Mặc dù có rất nhiều những giải thích về cách gõ namespace trong PHP, nhưng thực sự là rất khó chấp nhận ký tự "\" để phân cách.  Thứ nhất  là hơi va chạm với tư tưởng chạy đa nền của PHP vì ký tự "\" được dùng phổ biến trong windows để phân tách đường dẫn. Thứ hai là có vẻ như PHP đã sử dụng cạn kiệt tài nguyên bàn phím. 

  • PHP cho đến nay đã quá rộng lớn và các lập trình viên dễ dàng tìm được nhiều giải pháp khác nhau cho cùng một bài toán. Điều này thể hiện rất rõ ràng tư tưởng "open and share" mà nhờ nó, nhân loại mới có được kho tri thức khổng lồ (không chỉ trong ngành khoa học máy tính mà còn ở tất cả các lĩnh vực khác). Tuy nhiên, hãy nhìn Python làm, bạn có rất ít những cách để xử lý một vấn đề và thường thì những cách đó luôn là cách tốt nhất và dễ dàng nhất cho bạn, đến nỗi bạn chả buồn nghĩ tới hướng khác :P. Ở phía đối diện, .NET độc quyền gắn chặt với hệ điều hành Window$ của Micro$oft nhưng có sự thống nhất, rõ ràng và ổn định cực tốt (nếu bạn chọn phát triển trên nền tảng này).


 

Yahoo và facebook xài PHP

Quá đúng, bỏ qua phần backend thì chính những đoạn mã  PHP đã dựng lên bộ mặt yahoo & facebook như bây giờ. Và nó đã chứng minh giá trị của mình khi cả Yahoo & facebook đều đã hoặc đang trở thành những đế chế internet với danh tiếng, lợi nhuận & lượng người dùng cực lớn, chưa kể đến số lượng các dịch vụ kèm theo.

Thế nhưng, trong các đăng báo tuyển dụng, họ luôn muốn ưu tiên những ứng viên biết thêm Perl hoặc Python bên cạnh thành thạo PHP (bỏ qua các yêu cầu khác). Câu hỏi đặt ra là, họ (yahoo & facebook) định cho những ứng viên này làm cả ở nền tảng trên & dưới của hệ thống web application? hay họ muốn những ứng viên đó có được tư duy ngôn ngữ của perl, python? hay nữa là họ muốn dự phòng và sẵn sàng chuyển đổi sang perl, python? (lol)

Đặc điểm

Một chút hình dung




Có nghĩa lý gì? Ai cũng biết .NET là một nền tảng còn PHP là một ngôn ngữ lập trình, tất nhiên sẽ là không hợp lý nếu so sánh chúng với nhau. Cái tôi muốn đề cập là, với .NET chúng ta có thể sử dụng để lập trình web, windows application, mobile, embedded, cloud ... với sự tách biệt không quá lớn dành cho lập trình viên (tất nhiên môi trường triển khai thì không nói). Còn PHP không thể đứng một mình, nó sẽ kết hợp với các công nghệ khác tạo thành những nền tảng thực thi bài toán, mà chất lượng kết quả bài toán đó phụ thuộc rất nhiều vào kinh nghiệm & kiến thức của kiến trúc sư trưởng dự án. Sợi dây liên kết này tôi cho rằng là kém vững trãi hơn so với .NET

Ngoài ra, mô hình trên còn thể hiện một nội dung khác. Nếu coi mỗi ngôn ngữ là một tập thông tin thì chúng liên kết với nhau qua giao của những tập đó. Có nghĩa là PHP sẽ đứng chung với python, perl, ruby ... Và cũng có nghĩa là tôi sẽ chọn python thay vì PHP để kết hợp với flex. Tức là PHP đã mất đi một người dùng là tôi, ít nhất là trong dự án nào đó.

Buồn ngủ quá nên đoạn này viết hơi sơ sài và lung tung, sẽ cập nhật lại sớm thôi

Tuy nhiên

Các lập trình viên PHP đừng quá buồn và suy nghĩ nhiều làm gì, PHP đã, đang và sẽ luôn làm rất tốt trong phân khúc thị trường của nó. Và trong 1, 2, 3 năm nữa có thể ta có PHP phiên bản 6.0, 6.1, 6.2 ... nhưng rồi nó sẽ phát triển tiếp thành cái gì? Cộng đồng không có nhiều người biết, tôi cá là bạn không biết, còn tất nhiên là tôi không biết roài. :D

(just my cent at 3 a.m)