Tại sao PHP không được sử dụng bởi các công ty lớn?

Tôi đã đưa ra một nhận xét cụt lủn trong một chủ đề câu hỏi khác gọi PHP là một ngôn ngữ tồi tệ và nó đã bị bỏ phiếu như điên. Rõ ràng có rất nhiều người ở đây yêu thích PHP

Vì vậy, tôi thực sự tò mò. Tôi đang thiếu gì?

Đây là những lý do của tôi để không thích nó

  • PHP có cách đặt tên không nhất quán cho các hàm tích hợp và thư viện. Các mẫu đặt tên có thể dự đoán được rất quan trọng trong bất kỳ thiết kế nào

  • PHP có thứ tự tham số không nhất quán của các hàm dựng sẵn, ví dụ: array_map so với. array_filter gây khó chịu trong các trường hợp đơn giản và làm tăng tất cả các loại hành vi không mong muốn hoặc tệ hơn

  • Các nhà phát triển PHP liên tục loại bỏ các chức năng tích hợp sẵn và chức năng cấp thấp hơn. Một ví dụ điển hình là khi họ không dùng tính năng chuyển qua tham chiếu cho các chức năng. Điều này tạo ra một cơn ác mộng cho bất kỳ ai thực hiện gọi lại chức năng

  • Thiếu cân nhắc trong thiết kế lại. Trong nhiều trường hợp, việc ngừng sử dụng ở trên đã loại bỏ khả năng cung cấp các giá trị từ khóa mặc định cho các hàm. Họ đã sửa lỗi này trong PHP 5, nhưng họ không dùng tham chiếu chuyển qua trong PHP 4

  • Thực thi không gian tên kém (trước đây hoàn toàn không có khoảng trắng tên). Bây giờ không gian tên tồn tại, chúng ta sử dụng cái gì làm ký tự quy định? . Ký tự được sử dụng phổ biến để thoát, ngay cả trong PHP

  • Chuyển đổi loại ẩn quá rộng dẫn đến lỗi. Tôi không gặp vấn đề gì với việc chuyển đổi ngầm định, chẳng hạn như float thành số nguyên hoặc ngược lại. Nhưng PHP (lần cuối tôi đã kiểm tra) sẽ vui vẻ chuyển đổi một cách kỳ diệu một mảng thành một số nguyên

  • Hiệu suất đệ quy kém. Đệ quy là một công cụ cơ bản quan trọng để viết bằng bất kỳ ngôn ngữ nào; . Hỗ trợ kém là không thể tha thứ

  • Các chức năng không phân biệt chữ hoa chữ thường. Tôi không biết họ đang nghĩ gì về điều này. Ngôn ngữ lập trình là một cách để chỉ định hành vi cho cả máy tính và người đọc mã mà không có sự mơ hồ. Trường hợp không nhạy cảm giới thiệu nhiều sự mơ hồ

  • PHP khuyến khích (thực tế yêu cầu) kết hợp xử lý với trình bày. Vâng, bạn có thể viết PHP mà không làm như vậy, nhưng thực sự dễ dàng hơn để viết mã theo cách không chính xác (từ góc độ thiết kế âm thanh)

  • Hiệu suất PHP rất tệ nếu không có bộ nhớ đệm. Có ai bán sản phẩm bộ nhớ đệm thương mại cho PHP không?

Tệ nhất là PHP thuyết phục mọi người rằng thiết kế ứng dụng web rất dễ dàng. Và nó thực sự làm cho nhiều nỗ lực liên quan trở nên dễ dàng hơn nhiều. Nhưng thực tế là, thiết kế một ứng dụng web vừa bảo mật vừa hiệu quả là một nhiệm vụ rất khó khăn.

Bằng cách thuyết phục rất nhiều người tham gia lập trình, PHP đã dạy cho cả một nhóm lập trình viên những thói quen xấu và thiết kế tồi. Nó cung cấp cho họ quyền truy cập vào các khả năng mà họ thiếu hiểu biết để sử dụng một cách an toàn. Điều này đã dẫn đến danh tiếng của PHP là không an toàn

(Tuy nhiên, tôi sẵn sàng thừa nhận rằng PHP không hơn không kém an toàn hơn bất kỳ ngôn ngữ lập trình web nào khác. )

Tôi đang thiếu gì về PHP?

Vì vậy hãy thuyết phục tôi bằng cách khác


Câu trả lời được xếp hạng cao nhất


Tôi sẽ cố gắng trả lời từng gạch đầu dòng của bạn

PHP có cách đặt tên không nhất quán cho các hàm tích hợp và thư viện. Các mẫu đặt tên có thể dự đoán được rất quan trọng trong bất kỳ thiết kế nào

Tôi vừa yêu vừa ghét chủ đề này. Bởi vì cốt lõi của nó, vấn đề này là đúng. Tại sao một số chức năng hai từ được phân chia bằng dấu gạch dưới và một số thì không? . Nhưng vào cuối ngày. điều này có thực sự quan trọng không? . net chỉ cần một cú nhấp chuột vào trình duyệt, đây đơn giản không phải là vấn đề lớn. Nó có phải là một tiêu cực đối với PHP như một ngôn ngữ? . Nó có cản trở khả năng trở thành một lập trình viên hiệu quả của tôi không?

Các nhà phát triển PHP liên tục loại bỏ các chức năng tích hợp sẵn và chức năng cấp thấp hơn. Một ví dụ điển hình là khi họ không dùng tính năng chuyển qua tham chiếu cho các chức năng. Điều này tạo ra một cơn ác mộng cho bất kỳ ai thực hiện gọi lại chức năng

Cá nhân, tôi nghĩ rằng đây không phải là một điểm tốt. Việc không dùng nữa là cần thiết đối với sự phát triển của một ngôn ngữ, đặc biệt là ngôn ngữ có nhiều lỗ hổng như PHP. PHP nhận được rất nhiều lời chỉ trích vì "làm cho nó dễ trở thành một lập trình viên tồi*", nhưng đồng thời, nhóm PHP cũng gặp rắc rối khi họ cố gắng loại bỏ các cấu trúc ngu ngốc khỏi ngôn ngữ, chẳng hạn như chuyển thời gian cuộc gọi . Loại bỏ tham chiếu qua thời gian cuộc gọi là một trong những bước đi tốt nhất mà họ từng thực hiện. Không có cách nào dễ dàng hơn cho một nhà phát triển mới làm quen với "tính năng" này

Thiếu cân nhắc trong thiết kế lại. Trong nhiều trường hợp, việc ngừng sử dụng ở trên đã loại bỏ khả năng cung cấp các giá trị từ khóa mặc định cho các hàm. Họ đã sửa lỗi này trong PHP 5, nhưng họ không dùng tham chiếu chuyển qua trong PHP 4

Tôi không nghĩ rằng có một sự thiếu cân nhắc chung nào cả, tôi nghĩ rằng bạn chỉ bị choáng váng bởi sự thay đổi cụ thể này và bị bỏ lại với vị chua trong miệng. Thay đổi ngôn ngữ thường được biết trước hàng tháng nếu không muốn nói là hàng năm. Hướng dẫn di chuyển đã được cung cấp để di chuyển từ 4 sang 5 và sự khác biệt về phiên bản được ghi lại trong sách hướng dẫn. Tham chiếu qua thời gian cuộc gọi là một "tính năng" khủng khiếp và không mang lại cho nhà phát triển bất kỳ sức mạnh biểu cảm nào mà họ không thể có được bằng các phương tiện khác. Tôi rất vui vì nó đã biến mất (cùng với những câu nói nhảm nhí khác như ma thuật)

Thực thi không gian tên kém (trước đây hoàn toàn không có khoảng trắng tên). Bây giờ không gian tên tồn tại, chúng ta sử dụng cái gì làm ký tự quy định? . Ký tự được sử dụng phổ biến để thoát, ngay cả trong PHP

Tôi có cảm xúc lẫn lộn về việc này. Một phần trong tôi nghĩ rằng "dù sao thì việc thoát khỏi ký tự cũng chẳng có ý nghĩa gì ngoài chuỗi", và một phần trong tôi nghĩ "chắc chắn họ có thể sử dụng thứ gì đó tốt hơn". Nhưng họ có thể? . Đó có phải là một sự giám sát lớn mà cho đến 5. 3 PHP chưa bao giờ có không gian tên?

Chuyển đổi loại ẩn quá rộng dẫn đến lỗi. Tôi không gặp vấn đề gì với việc chuyển đổi ngầm định, chẳng hạn như float thành số nguyên hoặc ngược lại. Nhưng PHP (lần cuối tôi đã kiểm tra) sẽ vui vẻ chuyển đổi một cách kỳ diệu một mảng thành một số nguyên

Tôi nghĩ có thể không đồng ý với cách PHP thực hiện điều này, nhưng không đồng ý rằng nó làm cho ngôn ngữ trở nên "xấu". Cơ mà hỏi sao ngồi topic này mà tranh luận về đánh máy yếu vs mạnh. (P. S. Tôi hoàn toàn không) Đối với hồ sơ. PHP sẽ đưa ra lỗi cấp độ E_WARNING khi loại đối số quan trọng và không thể giải quyết bằng cách ép buộc

Hiệu suất đệ quy kém. Đệ quy là một công cụ cơ bản quan trọng để viết bằng bất kỳ ngôn ngữ nào; . Hỗ trợ kém là không thể tha thứ

PHP là một DSL cho web. Tôi đã làm việc đó toàn thời gian trong 8 năm và có thể đã sử dụng đệ quy 4 hoặc 5 lần, thường là đối với một số loại thư mục gây phiền nhiễu hoặc truyền tải XML. Nó không phải là một mô hình cần thiết để phát triển web thường xuyên. Tôi không bào chữa cho hiệu suất chậm, nhưng đây là một vấn đề học thuật hơn là vấn đề sản xuất. Nếu bạn cần hiệu suất đệ quy thực sự mạnh mẽ, PHP đã là ngôn ngữ không phù hợp với bạn

Các chức năng không phân biệt chữ hoa chữ thường. Tôi không biết họ đang nghĩ gì về điều này. Ngôn ngữ lập trình là một cách để chỉ định hành vi cho cả máy tính và người đọc mã mà không có sự mơ hồ. Trường hợp không nhạy cảm giới thiệu nhiều sự mơ hồ

Tôi hoàn toàn đồng ý 100% với điều này

PHP khuyến khích (thực tế yêu cầu) kết hợp xử lý với trình bày. Vâng, bạn có thể viết PHP mà không làm như vậy, nhưng thực sự dễ dàng hơn để viết mã theo cách không chính xác (từ góc độ thiết kế âm thanh)

*Hmmm, chủ đề này nghe quen quen

Nhưng nghiêm túc mà nói, tôi thấy điều đáng chú ý là mọi người sẽ phàn nàn về một ngôn ngữ hoàn toàn 100% cho phép bạn triển khai bất kỳ hệ thống đầu ra nào bạn muốn (chỉ riêng khối lượng và kiểu dáng của các hệ thống tạo khuôn mẫu PHP đã nói lên điều này) - HOẶC - bỏ qua tất cả những chi phí đó và . Điều này không làm cho PHP trở nên tồi tệ chút nào. Đó là một phần của những gì làm cho PHP tốt

Hiệu suất PHP rất tệ nếu không có bộ nhớ đệm. Có ai bán sản phẩm bộ nhớ đệm thương mại cho PHP không?

Bạn có nghĩa là bộ nhớ đệm mã byte (như bộ tăng tốc) hoặc bộ đệm đầu ra?

Nếu trước đây, thì tôi thực sự không biết mình quan tâm đến chủ đề này đến mức nào. Máy gia tốc miễn phí và dễ chạy. Chúng tôi có thể tranh luận về lý do tại sao nó không phải là một phần của ngôn ngữ nhưng cuối cùng, tôi không nghĩ nó quan trọng lắm

Nếu bạn đang nói về bộ nhớ đệm đầu ra thì tôi không biết phải nói gì với bạn. BẤT KỲ dự án web nào có lưu lượng truy cập đáng kể đều cần lưu vào bộ nhớ đệm (ví dụ: seed podcast #27). Đây hoàn toàn không phải là vấn đề dành riêng cho PHP

Tóm lại, tôi nghĩ bạn coi PHP là một ngôn ngữ "xấu" theo cách rất hàn lâm. Và trong bài đăng trước của bạn, có lẽ bạn đã bị những người như tôi, những người sử dụng PHP để "hoàn thành công việc" bỏ phiếu phản đối.


Câu trả lời được xếp hạng cao thứ hai


Tất cả những lời chỉ trích của bạn (và một số nữa) là hợp lệ. Bạn được phép và thậm chí có thể ghét PHP

Nhưng, một lần nữa, nó có một số lợi ích

  • Phổ cập
  • Nhanh (đặc biệt là sử dụng bộ đệm opcode)
  • Cộng đồng lớn (và tài liệu tuyệt vời)
  • Làm

Cuối cùng, bạn có thể khắc phục nhiều nhược điểm nếu không muốn nói là tất cả bằng cách viết mã tốt mà bạn muốn viết bằng bất kỳ ngôn ngữ nào khác. Bạn có thể viết mã chắc chắn, an toàn và có mùi thơm bằng PHP, mã này sẽ chạy nhanh hơn nhiều lần và dễ lưu trữ cũng như mở rộng quy mô hơn nhiều lựa chọn thay thế


Câu trả lời được xếp hạng cao thứ ba


Tôi đang thiếu gì về PHP?

Đơn giản. Thực tế là các lập trình viên kém rất phòng thủ về ngôn ngữ của họ. ;) PHP rất dễ học, dễ hơn nhiều so với các giải pháp thay thế, và một khi bạn đã học nó, nó không thực sự rõ ràng 1) PHP có vấn đề gì, 2) các giải pháp thay thế tốt hơn như thế nào và 3) cách chuyển sang và

Và có lẽ thực tế là mọi người có những lựa chọn thay thế nào? . Và nó chậm. Vì vậy, có lẽ "sức mạnh" của PHP thực sự là không có sự thay thế tốt nào tồn tại. Ít nhất đây là lý do tại sao tôi tránh xa tất cả các chương trình web khi có thể. PHP thật tệ và tôi cũng không quan tâm đến bất kỳ lựa chọn thay thế nào

PHP có quá nhiều vấn đề cơ bản đến mức nó chẳng buồn cười chút nào. Từ việc thiếu hỗ trợ unicode, đến nhiều chuyển đổi kiểu ẩn thường dẫn đến các lỗ hổng bảo mật không mong muốn, đến sự trộn lẫn hoàn toàn giữa trình bày và. mọi thứ khác hoặc mô-đun cơ sở dữ liệu mặc định không (lần cuối tôi kiểm tra) sử dụng các truy vấn được tham số hóa. Chúng ta đang nói về một ngôn ngữ được tạo ra cho hai mục đích, truy cập cơ sở dữ liệu và tạo HTML, và điều này thật tồi tệ ở cả hai mục đích

Nó chỉ là một mớ hỗn độn khó chịu, một ngôn ngữ được thiết kế bởi những người không đủ trình độ hoặc không có khả năng thiết kế một ngôn ngữ. ;)

Những công ty lớn nào vẫn sử dụng PHP?

Các công ty như Facebook, Spotify và Slack đều đã biết sử dụng ngôn ngữ PHP theo cách này hay cách khác

Tại sao PHP không phù hợp với các ứng dụng web dựa trên nội dung khổng lồ?

Điều này là do PHP với tư cách là ngôn ngữ kịch bản không cho phép bất kỳ sửa đổi hoặc thay đổi nào đối với khung hành vi cốt lõi của ứng dụng web .

Tại sao PHP lại không phổ biến?

Ngay cả những nhà phát triển chưa từng làm việc với PHP cũng đã nghe nói về cú pháp cẩu thả, tính khó đoán và sự không nhất quán trong cách đặt tên hàm . Trong khi tất cả các ngôn ngữ khác có rất nhiều hạn chế khi viết mã, thì PHP lại thiếu chúng. Và điều này dẫn đến mã chất lượng kém.