+2

PHP sẽ bước sang tuổi 30 vào năm 2025, liệu nó đã qua thời kỳ đỉnh cao?

Giới thiệu: Chỉ số TIOBE mới nhất cho thấy mức độ phổ biến của PHP đã giảm xuống mức thấp nhất mọi thời đại, xếp hạng 17. Khảo sát Nhà phát triển hàng năm của Stack Overflow cũng tiết lộ sự sụt giảm trong sự ưa chuộng của nhà phát triển, giảm từ khoảng 30% xuống 18%. "PHP là ngôn ngữ tốt nhất trên thế giới" đã trở thành một meme hài hước đen tối giữa các lập trình viên. Trong bối cảnh suy giảm này, liệu PHP thực sự không có triển vọng? Nó còn đáng để học nữa không?

Mô tả hình ảnh

1. Từ Vinh quang đến Suy tàn?

PHP, ra đời năm 1995, bắt đầu như một công cụ kịch bản đơn giản để xử lý các biểu mẫu HTTP. Các phiên bản sau đã bổ sung hỗ trợ cơ sở dữ liệu MySQL, biến nó thành một ngôn ngữ phát triển web độc lập. Được thúc đẩy bởi sự phát triển nhanh chóng của internet, tính dễ sử dụng và cộng đồng mạnh mẽ của PHP đã đẩy nó trở thành ngôn ngữ thống trị cho phát triển ứng dụng web. Kết hợp với Linux, MySQL và Apache, bộ LAMP đã trở thành nền tảng của các trang web và ứng dụng động. Theo thống kê của W3C, gần 78% trang web trên thế giới được xây dựng bằng PHP.

PHP, với chi phí thấp, dễ sử dụng, linh hoạt, khả năng mở rộng và hệ sinh thái web phát triển mạnh, đã từng giữ một vị trí nổi bật trong thế giới phát triển, cạnh tranh với Java.

Tuy nhiên, với sự trỗi lên của internet di động, điện toán đám mây và trí tuệ nhân tạo, các hệ thống phần mềm internet đã trở nên ngày càng phức tạp. Các trang web quy mô lớn đòi hỏi tính đồng thời và khả năng sẵn sàng cao. Java mang lại lợi thế hơn PHP về tính an toàn kiểu, hiệu suất, nhóm kết nối đa luồng, tiêu chuẩn mã hóa nghiêm ngặt hơn và các giải pháp và hệ sinh thái trưởng thành hơn để quản trị dịch vụ. Nhiều nhóm công nghệ hiện nay thích Java hơn PHP để xây dựng hệ thống web.

Hơn nữa, sự xuất hiện của các ngôn ngữ lập trình mới như Node.js và Golang, với những ưu điểm như biên dịch tĩnh, hiệu suất vượt trội và lập trình không đồng bộ, đã làm tăng cường cạnh tranh. Những ngôn ngữ này đang phát triển mạnh mẽ và thu hút ngày càng nhiều nhà phát triển.

Mặc dù cộng đồng PHP tiếp tục cải thiện ngôn ngữ, nhưng vị trí của PHP trong một số lĩnh vực đã bị xói mòn. Khi công nghệ phát triển, một số trang web và ứng dụng quan trọng đang di chuyển sang các ngôn ngữ và framework khác, dẫn đến những câu hỏi về tương lai của PHP. Nhiều nhà phát triển tin rằng PHP đang suy giảm, một quan điểm được phản ánh trong chỉ số TIOBE gần đây. Các nhà phát triển đang mất niềm tin vào PHP và chuyển sang các ngôn ngữ khác.

2. Lý do cho sự Suy giảm của PHP

Các yếu tố bên ngoài bao gồm thời đại thay đổi. Sự bùng nổ internet đã lắng xuống, và kỷ nguyên của trí tuệ nhân tạo đang đến, với Python dẫn đầu. Các ngôn ngữ khác cũng đang trải qua sự sụt giảm tương tự về sự chú ý. Các yếu tố bên trong bao gồm:

  • Hệ sinh thái hạn chế: PHP chưa mở rộng ra ngoài phát triển web.
  • Cập nhật không đủ: Sự phát triển của PHP trong các hệ thống kiểu, trình biên dịch và lập trình đồng thời đã tụt hậu so với các ngôn ngữ như Java, Golang và JavaScript (V8).
  • Hành lý Legacy: PHP vẫn mang hành lý từ 20 năm trước, như siêu toàn cục (ví dụ: $_GET, $_POST) và cách đặt tên hàm không nhất quán.

Mặc dù có những thách thức này, PHP vẫn là một ngôn ngữ có giá trị, cung cấp năng lượng cho nhiều trang web và ứng dụng web. Cộng đồng PHP tiếp tục nỗ lực để thích ứng ngôn ngữ với các xu hướng và nhu cầu thị trường mới. Mặc dù PHP có thể đang trải qua sự suy giảm, nhưng hệ sinh thái mạnh mẽ của nó cho thấy nó sẽ tiếp tục đóng một vai trò quan trọng trong bối cảnh phát triển.

3. Hệ sinh thái PHP

Một hệ sinh thái lành mạnh là rất quan trọng đối với lập trình, bao gồm các công cụ, thư viện, framework, cộng đồng, tài liệu, hướng dẫn, dịch vụ của bên thứ ba và hỗ trợ. Một hệ sinh thái sôi động ảnh hưởng trực tiếp đến năng suất của nhà phát triển, thành công của dự án và tiến bộ công nghệ.

PHP vượt trội trong lĩnh vực phát triển web. Java tự hào có hệ sinh thái trưởng thành trong phần mềm máy tính để bàn, Android, dữ liệu lớn, tài chính và thương mại điện tử. Python phát triển mạnh trong khoa học dữ liệu, AI, học máy, điện toán khoa học và giáo dục, trở nên đặc biệt phổ biến với sự ra đời của AI. Golang đang tiến sâu vào phần mềm gốc đám mây và phía máy chủ, thay thế C/C++. Node.js thống trị phát triển giao diện người dùng, ứng dụng một trang (SPA) và phát triển full-stack.

Ngược lại, hệ sinh thái của PHP tương đối hẹp, làm nổi bật những hạn chế của nó. Nhóm PHP chính thức dường như ít quan tâm đến việc hỗ trợ các hệ sinh thái bên ngoài phát triển web, tập trung cập nhật chủ yếu vào PHP-FPM và Apache.

May mắn thay, cộng đồng có Swoole, một giải pháp coroutine không đồng bộ tương tự như Golang, giải quyết những thiếu sót của PHP trong lập trình đồng thời không đồng bộ và giao tiếp mạng. Swoole cung cấp cho các nhà phát triển nhiều lựa chọn và tính linh hoạt hơn để xử lý các ứng dụng phức tạp và đồng thời cao. Ngoài ra, các tiêu chuẩn kỹ thuật mạnh mẽ là điều cần thiết để đảm bảo chất lượng dự án và hiệu quả phát triển.

4. Tiêu chuẩn Kỹ thuật là Quan trọng

Kinh nghiệm đã chỉ ra rằng các thực hành kỹ thuật mạnh mẽ quan trọng hơn tốc độ phát triển. Các tiêu chuẩn tốt đảm bảo khả năng bảo trì, khả năng mở rộng và tính ổn định lâu dài. Mặc dù phát triển nhanh chóng mang lại lợi ích ngắn hạn, nhưng các dự án thiếu tiêu chuẩn có thể gặp phải nhiều vấn đề:

  • Giảm chất lượng mã: Mã không được chuẩn hóa trở nên lộn xộn, khó hiểu và bảo trì, tốn nhiều thời gian và công sức hơn trong quá trình phát triển, gỡ lỗi và sửa đổi.
  • Khó khăn trong cộng tác nhóm: Việc thiếu tiêu chuẩn dẫn đến các phong cách và thói quen mã hóa không nhất quán, cản trở giao tiếp và cộng tác nhóm.
  • Khả năng đọc mã kém: Mã được chuẩn hóa dễ đọc và hiểu hơn, hỗ trợ xác định vấn đề, hiểu mã và đánh giá mã.
  • Tăng chi phí bảo trì: Mã không được chuẩn hóa làm tăng chi phí bảo trì, vì các nhà phát triển dành nhiều thời gian hơn để giải mã và sửa đổi mã, tích lũy nợ kỹ thuật.
  • Khó khăn trong việc phát triển dự án: Khi dự án phát triển và yêu cầu thay đổi, mã được chuẩn hóa kém sẽ trở nên khó bảo trì và mở rộng hơn, thường yêu cầu tái cấu trúc hoặc viết lại.

Việc bỏ qua các tiêu chuẩn kỹ thuật có thể gây ra hậu quả nghiêm trọng, có khả năng làm đình trệ sự phát triển dự án. PHP cung cấp một số công cụ để cải thiện tiêu chuẩn kỹ thuật:

  • PHPUnit: Một framework kiểm thử đơn vị.
  • ServBay: Một công cụ quản lý môi trường phát triển một cửa. Các nhà phát triển có thể nhanh chóng cài đặt, nâng cấp và chuyển đổi giữa các phiên bản dịch vụ khác nhau. Với các tổ hợp mô-đun, các nhà phát triển có thể xếp chồng và thay thế các dịch vụ như gạch Lego, mô phỏng các môi trường phát triển khác nhau. ServBay cũng giúp căn chỉnh môi trường nhóm, đảm bảo tính nhất quán và cho phép chia sẻ và cộng tác theo thời gian thực.
  • Laravel: Một framework phát triển web PHP sạch sẽ và tao nhã, giúp các nhà phát triển thoát khỏi mã lộn xộn, xây dựng các ứng dụng web và viết mã ngắn gọn, biểu cảm.
  • PSR: Một loạt các tiêu chuẩn mã hóa PHP do cộng đồng điều khiển, bao gồm tự động tải, phong cách mã hóa, quy ước đặt tên và thiết kế giao diện.
  • PhpStorm: Một IDE PHP được thiết kế để tăng cường năng suất, cung cấp hoàn thành mã thông minh, điều hướng nhanh và kiểm tra lỗi tức thì.

Tuy nhiên, từ góc độ ngôn ngữ, PHP có những thiếu sót cố hữu so với Java. Các phiên bản đầu thiếu không gian tên và hỗ trợ đầy đủ cho các tính năng hướng đối tượng. Mặc dù PHP 7 đã giới thiệu những cải tiến, nhưng các vấn đề vẫn tồn tại:

(1) Thiếu Kiểu gõ Nghiêm ngặt

Kiểu gõ nghiêm ngặt thúc đẩy mã được chuẩn hóa. Kiểu gõ yếu thường dẫn đến khó khăn trong quá trình tái cấu trúc. PHP hiện hỗ trợ gợi ý kiểu trong hầu hết cú pháp:

1. Đối số Hàm và Giá trị Trả về:

function fun(int $a, float $b, FunClass $c, string $d, callable $e): bool {
    // code ...
}

2. Thuộc tính Đối tượng:

class FunClass {
    public int $age;
    public string $name;
    public stdClass $attrs;
}

Nên sử dụng chế độ nghiêm ngặt:

<?php
declare(strict_types=1);

Thật không may, mảng PHP vẫn không được nhập kiểu:

$a1 = new FunClass;
$array = [$a1];
$a2 = $array[0]; // Thông tin kiểu bị mất

Việc thiếu kiểu gõ mảng này là lý do tại sao HHVM của Facebook cuối cùng đã tách khỏi PHP, trở thành ngôn ngữ Hack được nhập kiểu nghiêm ngặt.

(2) Thiếu Hỗ trợ Xây dựng Nhị phân

Vòng đời phát triển phần mềm bao gồm phát triển, kiểm thử, xây dựng và triển khai. Các ngôn ngữ tĩnh như Java và Golang biên dịch thành mã nhị phân, loại bỏ nhu cầu triển khai mã nguồn. PHP thường triển khai mã nguồn trực tiếp, dẫn đến:

  • Chèn WebShell: Chèn mã độc hại thông qua tải lên hoặc ghi tệp.
  • Sửa đổi mã trực tuyến trực tiếp: Sự khác biệt giữa mã máy chủ và kho lưu trữ Git.
  • Thách thức triển khai: Cập nhật phân mảnh gây ra lỗi logic.
  • Rò rỉ mã nguồn.

Mặc dù Docker giảm thiểu một số vấn đề này, nhưng các nhà phát triển cốt lõi của PHP vẫn bám vào việc tải lại nóng, một tính năng chủ yếu có lợi trong phát triển và kiểm thử.

(3) Đặt tên Hàm không Nhất quán

Các hàm tích hợp sẵn của PHP nằm trong không gian tên gốc và một số hàm có tên không nhất quán:

  • htmlspecialchars nên là html_encode_special_chars.
  • Các hàm chuỗi như strstr, substrstr_replace thiếu tính nhất quán, không giống như các hàm array_* được tổ chức tốt.

(4) Thứ tự Tham số không Nhất quán

Các tham số hàm tích hợp sẵn được sắp xếp không nhất quán. Hãy xem xét array_searcharray_filter:

array_filter($array, $callback);
array_search($value, $array);

Mảng không phải lúc nào cũng là tham số đầu tiên, yêu cầu các nhà phát triển phải tham khảo tài liệu.

5. PHP vẫn đáng để học?

Mặc dù có những nhược điểm, PHP vẫn đáng để học. So với các ngôn ngữ chính thống như Java, Python, C++ và các ngôn ngữ mới hơn như Node.js, Rust và Golang, PHP mang lại những lợi thế độc đáo và bộ công cụ tiện lợi giúp các nhà phát triển tiết kiệm thời gian.

(1) Đơn giản

PHP có cú pháp tương đối đơn giản, không giống như các ngôn ngữ phức tạp như C++ với ngữ nghĩa di chuyển và các phức tạp của luật sư ngôn ngữ. PHP tránh các mối lo ngại về tràn số nguyên, không giống như C++ hoặc Golang với các kiểu số nguyên khác nhau của chúng (int8, int16, v.v.). Nó không có con trỏ, loại bỏ các ngoại lệ con trỏ null phổ biến trong Java và Golang. Nó cũng tránh cú pháp đôi khi khó hiểu của Python và những điểm kỳ quặc của JavaScript như sự tương đương của 0, [], '\t' và '0'. PHP đơn giản và thân thiện với người mới bắt đầu, với đường cong học tập thấp.

(2) Thư viện Hàm mở rộng

Thư viện tích hợp sẵn rộng lớn của PHP bao gồm một loạt các chức năng, bao gồm thao tác chuỗi, mảng, ngày tháng, toán học, biểu thức chính quy, JSON, XML, thao tác tệp, email, giao tiếp mạng, thao tác cơ sở dữ liệu, mật mã, xử lý hình ảnh, quản lý thiết bị đầu cuối và quy trình, và quốc tế hóa. Chức năng sẵn có này làm giảm nhu cầu về mã tùy chỉnh hoặc phụ thuộc vào thư viện của bên thứ ba, hợp lý hóa việc phát triển.

6. Xu hướng Tương lai cho PHP

Kể từ khi thành lập PHP Foundation, ngôn ngữ này đã nhận được tài trợ và phát triển ổn định. Nhiều vấn đề hiện tại có thể sẽ được giải quyết trong các phiên bản tương lai.

Các framework PHP như Laravel và Symfony đang trưởng thành, thu hẹp khoảng cách với framework Spring của Java. Các công cụ như ServBay nâng cao năng suất của nhà phát triển và giảm rào cản gia nhập. Tiện ích mở rộng coroutine Swoole, với bản phát hành v6.0 được lên kế hoạch, giới thiệu đa luồng và coroutine, cải thiện khả năng đồng thời của PHP.

Kết luận

Theo quan điểm của tôi, PHP đang tiến bộ ổn định và có tiềm năng lấy lại mức độ phổ biến. Đối với các nhà phát triển PHP, điều cần thiết là nắm bắt các công cụ AI như ChatGPT và Github Copilot, hiểu các mô hình ngôn ngữ lớn như Transformers, sử dụng Docker và điều phối container, thành thạo các công nghệ giao diện người dùng như Vue, React và ElementUI để phát triển full-stack, và mở rộng kỹ năng bằng cách học các ngôn ngữ khác như C++, Golang hoặc Java.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí