Làm thế nào để phá vỡ php php là một mô hình ngôn ngữ xấu? [đóng cửa]


19

PHP không phải là một ngôn ngữ xấu (hoặc ít nhất là không tệ như một số ngôn ngữ có thể đề xuất). Tôi đã có những giáo viên thậm chí không biết PHP là hướng đối tượng cho đến khi tôi nói với họ. Tôi đã có những khách hàng ngay lập tức không tin tưởng chúng tôi khi chúng tôi nói rằng chúng tôi là nhà phát triển PHP và đặt câu hỏi cho chúng tôi về việc không sử dụng các ngôn ngữ và khung công tác sang trọng như Django hoặc RoR, hoặc các ngôn ngữ "doanh nghiệp và vững chắc" như Java và ASP.NET.

Facebook được xây dựng trên PHP. Có rất nhiều dự án vững chắc cung cấp năng lượng cho web như Joomla và Drupal được sử dụng trong các doanh nghiệp và chính phủ. Có các khung và thư viện có một số kiến ​​trúc tốt nhất tôi từng thấy trên tất cả các ngôn ngữ (Symfony 2, Doctrine). PHP có tài liệu tốt nhất tôi từng thấy và một cộng đồng lớn các chuyên gia.

PHP có các tính năng OO nâng cao như phản chiếu, giao diện, chứ chưa nói đến việc PHP hiện hỗ trợ tái sử dụng theo chiều ngang một cách tự nhiên và sạch sẽ thông qua các đặc điểm .

Có những lập trình viên và những đứa trẻ kịch bản xấu mang đến cho PHP tiếng xấu, nhưng lại tạo sức mạnh cho cộng đồng PHP cùng một lúc, và vì nó rất dễ để hoàn thành công việc PHP, bạn thường có thể làm những việc sai, được cấp, nhưng tại sao lại đổ lỗi cho ngôn ngữ?

Bây giờ, để giải quyết vấn đề này thành một câu hỏi có thể trả lời thực tế: điều gì sẽ là một cuộc tranh luận tốt và chắc chắn và ngắn gọn và ngọt ngào để tránh bị cau mày và ngăn chặn định kiến ​​trong một cú ngã và bảo vệ danh dự của bạn khi bạn nói bạn là một nhà phát triển PHP? .

(cookie miễn phí với kem đã đánh cho những người có bằng chứng thực nghiệm về việc thuyết phục một người nào đó làclclient hoặc những người khác tại chỗ)

PS: Chúng tôi sử dụng Symfony và mã kết thúc đẹp và có thể bảo trì

PPS: Facebook được viết bằng PHP, được biên dịch sang C ++ thông qua HipHop và được triển khai trên Hadoop. Tại đây: http://arstechnica.com/business/2012/04/exinating-a-behind-the-scenes-look-at-facebook-release-engineering/1/


9
Để bắt đầu, hãy gắn cờ tất cả các nhận xét chống PHP lén lút trên Lập trình viên. Có ít nhất một nhà phát triển PHP trong số những người điều hành, những người thực sự thích xóa những người đó ...
yannis 17/03/2016

23
Viết mã PHP tốt
Charles Sprayberry 17/03/2016

42
Xin lưu ý, tôi thực sự ghét khi người PHP mang đối số "FB được xây dựng trên PHP". Đó là bs, nó được xây dựng trên các hệ thống phân tán lớn như Hadoop và các phần thực sự hoàn thành trong C. PHP được sử dụng để tạo khuôn mẫu và UI, điều đó khó đủ để nói "FB được xây dựng trên PHP" ...
TC1

10
@NB Có, nhưng trong trường hợp này, IMHO nói rằng "FB được xây dựng trên PHP" giống như nói rằng StackOverflow được xây dựng trên CSS và JavaScript, vì nó có một số UI đẹp mắt chạm vào đây và ở đó ...
TC1

13
Tôi sẽ không thuê bạn vì tôi không muốn duy trì mã PHP. PHP đang đạt được các tính năng giống như Perl và JavaScript và các ngôn ngữ vội vã khác, nhưng chính cốt lõi của nó đã được thiết kế vội vàng và người ta không thể thay đổi điều đó. Có lẽ bạn nên xem xét việc học một số Django và RoR và Grails và do đó không biết ngôn ngữ.
Công việc

Câu trả lời:


40

Câu trả lời duy nhất tôi có là đây: mọi thứ đều tệ.

Bạn có thể tìm thấy vô số lý lẽ chống lại OOP là tốt (một tìm kiếm nhanh sẽ tiết lộ chúng) so với lập trình chức năng hoặc thủ tục. Bạn dường như chỉ ra rằng hỗ trợ OO của PHP bảo vệ nó.

Google trống hút và bạn sẽ tìm thấy kết quả cho bất cứ điều gì. Python hút . Ruby hút . Rails hút . PHP hút . Java hút .

Bạn muốn biết những gì thực sự hút? Lập trình viên. Lập trình viên hút. Bất kỳ nhà phát triển giỏi nào cũng có thể tạo ra một ứng dụng tuyệt vời, giao diện người dùng mặt sau, bất kể ngôn ngữ - ngay cả khi họ không quen thuộc với ngôn ngữ này! (Có nghĩa là, một lập trình viên giỏi sẽ có thể học và làm việc với bất kỳ ngôn ngữ nào một cách hiệu quả).

Cũng lưu ý rằng sự thành công của một ứng dụng không liên quan gì đến mã của nó. Tôi đã nghe nói rằng mã Facebook là khủng khiếp, nhưng bởi Chúa là nó hiệu quả. Điều tương tự cũng có thể đúng với Wikimedia (Wikipedia được xây dựng trên PHP và cũng là một trang web cực kỳ phổ biến). Điều thực sự quan trọng là kết quả!

PHP là ngôn ngữ mà cá nhân tôi quen thuộc nhất. Tôi sẽ bảo vệ nó cho đến chết. Tôi đã làm việc với các khung công tác PHP, mã PHP và PHP, python ruby (và thậm chí Java) tất cả để phát triển web. Tôi không thể nói rằng cái này đặc biệt tốt hơn cái kia. Điều quan trọng hơn là các nhà phát triển và các thuật toán. Tôi đã thấy mã tốt đến mức đáng kinh ngạc và hoàn toàn khủng khiếp trong nhiều ngôn ngữ (đặc biệt là PHP vì tôi tiếp xúc quá nhiều).


Bây giờ cho câu hỏi của bạn: nó phụ thuộc vào người bạn giao dịch với

Doanh nhân

Họ quan tâm chủ yếu về kết quả và hiệu quả chi phí. Thực tế là Facebook, Wikipedia và Wordpress rất thành công sử dụng PHP là quá đủ để thuyết phục họ rằng đó là một ngôn ngữ hiệu quả để xây dựng các ứng dụng thành công.

Lập trình viên

Hãy để mã của bạn nói cho chính nó. Nếu một nhà phát triển nói rằng PHP kém hơn theo một cách nào đó, hãy cho họ thấy một số mã PHP mà bạn tin là có hiệu quả. miếng bánh pudding đang bị ăn dở.


8
"Bất kỳ nhà phát triển giỏi nào cũng có thể tạo ra một ứng dụng tuyệt vời, mặt trước và mặt sau, bất kể ngôn ngữ nào" - nhắc lại rằng sau khi bạn đã thử nó trong Malbolge.
Michael Borgwardt

5
Tôi không nghĩ một lập trình viên giỏi có thể viết mã tốt bằng ngôn ngữ mà anh ta không biết. Decent, có thể, nhưng không tốt. Đó là bởi vì viết mã tốt trong bất kỳ ngôn ngữ nào cũng đòi hỏi kiến ​​thức tốt về thư viện và chính ngôn ngữ đó.
Svick 17/03/2016

4
Tôi không đồng ý; một nhà phát triển giỏi sẽ có thể làm quen với các kiến ​​thức cần thiết để viết các ứng dụng tốt. Kiến thức tốt về thư viện và cú pháp rất quan trọng, nhưng đó là điều mà một nhà phát triển giỏi có thể dễ dàng tiếp thu. Điều khó hơn nhiều là các thuật toán và khái niệm (và có lẽ là sự kiên nhẫn) .. ngay cả khi ngôn ngữ là Malbolge. Hoặc có thể tôi đang nghĩ về một nhà phát triển tuyệt vời .
Thuốc nổ gây ra

7
success of an application has nothing to do with its code<- Đúng. Nhưng khi mọi người nói rằng "PHP là một ngôn ngữ xấu", họ không có nghĩa là "các ứng dụng viết bằng PHP là xấu", thay vào đó, chúng có nghĩa là "các ứng dụng được viết bằng PHP thường không thú vị để làm việc do spaghetti mã". Có những ứng dụng tuyệt vời được viết bằng PHP, để chắc chắn. Nhưng tôi không nghĩ câu trả lời này giải quyết ý nghĩa của các lập trình viên khi họ gọi PHP là "xấu".
Billy ONeal 17/03/2016

2
@BillyONeal Số liệu của bạn là gì cho dù một ngôn ngữ là "tốt" hay "xấu?" Ứng dụng là tất cả mọi thứ .. không ai quan tâm đến . Linus Torvalds đã nổi giận về mức độ khủng khiếp của C ++ - bạn có thể nói rằng bất cứ điều gì đều xấu vì một số lập trình viên viết mã xấu trong đó.
Thuốc nổ gây ra

20

PHP có một lịch sử bẩn thỉu. Bây giờ tốt hơn nhiều là nó thậm chí chỉ một thời gian ngắn trước đây, nhưng có một thời gian, một thời gian rất dài, nơi rất nhiều thực tiễn và mô hình xấu được khuyến khích và khó tránh. Có cả một thế hệ mã PHP khủng khiếp đang tồn tại, và đến mức mà các lập trình viên mới đang học bằng cách đọc mã cũ, họ đang học hành vi xấu. PHP bây giờ có thể không xứng đáng với danh tiếng blackend, nhưng dù sao thì nó cũng đã kiếm được nó.

Đặt cược tốt nhất của bạn để bảo vệ PHP là cẩn thận khoảng cách và phân biệt trạng thái hiện tại của nghệ thuật với lịch sử mà mọi người đều quen thuộc. Bạn có thể nói rằng PHP không phải là một ngôn ngữ tồi tệ, nhưng nếu bạn nói chuyện với một người trong ngành trong một số năm, bộ nhớ của họ sẽ nói với họ bằng cách khác.

Chỉ cho họ cách nhóm PHP đã học hỏi từ những sai lầm của họ và thay đổi ngôn ngữ cho tốt hơn. Đã qua rồi thời kỳ trích dẫn ma thuật và đăng ký toàn cầu. Cuốn là mô hình toàn cầu mọi thứ, và chế độ an toàn, và mysql_escape_opes. Giải thích cho họ rằng các lập trình viên PHP thực sự luôn sử dụng các không gian tên và các truy vấn được tham số hóa, họ tránh các hàm bị phản đối và luôn đặt mã thư viện của họ bên ngoài thư mục gốc.

PHP đã thay đổi và các lập trình viên PHP đã thay đổi. Đó là lý do tại sao PHP là nền tảng tuyệt vời ngày nay. Ngoài ra, đó là nền tảng duy nhất mà bạn biết khách hàng của mình sẽ được cài đặt sẵn. Nó thật khổng lồ.

Một lưu ý phụ, tôi khuyên bạn không nên trích dẫn các công cụ và khung công tác CMS hiện tại như một chiến thắng lớn cho PHP. Bạn có nguy cơ họ chỉ ra những thứ như nghiên cứu bảo mật Websense từ 4 ngày trước cho thấy 94% các trường hợp nhiễm trang web gần đây chống lại các trang web PHP chạy phần mềm như Joomla và Wordpress. Đó không phải là loại công ty bạn muốn được nhìn thấy. Thay vào đó chỉ ra rằng mã của bạn sẽ được cách an toàn hơn tất cả những thứ khác.


1
+1 - nhưng - nhưng - Khẳng định rằng mã của bạn sẽ "an toàn hơn" so với đánh giá mã ngang hàng của một số chuyên gia sẽ không thực sự giữ nhiều nước cho bất kỳ ai có kinh nghiệm về bảo mật. Mọi người đều viết lỗi bảo mật. Bí quyết là chỉ sửa chúng trước một bước của kẻ xấu.
Billy ONeal 17/03/2016

@BillyONeal yep. Đoạn cuối có nghĩa là tấn công bạn một chút ... kỳ quặc, và khiến bạn thực sự nghĩ lại cách tiếp cận của bạn đối với bảo mật. Tôi đã thực hiện rất nhiều nghiên cứu về bảo mật của PHP so với các ứng dụng web không phải PHP và các báo cáo thật đáng lo ngại, ồ ạt chống lại PHP. Điều đó không có nghĩa là PHP tệ, nhưng bảo mật là mối quan tâm thực sự.
tylerl 17/03/2016

1
"Ngoài ra, đó là nền tảng duy nhất mà bạn biết khách hàng của mình sẽ cài đặt sẵn" Tuyên bố này dường như hoàn toàn sai đối với tôi, Không phải mọi máy chủ được triển khai đều được triển khai với ngăn xếp LAMPhp, cũng như bất kỳ bản phân phối máy chủ linux phổ biến nào tôi từng thử PHP được cài đặt sẵn. Tuy nhiên, mọi bản phân phối linux tôi từng sử dụng đều giao hàng với Python 2.x. Tôi nghi ngờ một số tiện ích phổ biến dựa vào nó.
ThorSummoner

9

PHP là COBOL của web. Cả hai ngôn ngữ đều không được tôn trọng, nhưng nhiều người tạo ra các hệ thống sống và duy trì hệ thống được viết bằng chúng, và chúng có mặt trong hầu hết mọi hệ thống máy tính chính cho thế giới bản địa của họ ( ví dụ , kinh doanh web và thương mại). Cả hai ngôn ngữ đều bị các học viên của các ngôn ngữ khác, phổ biến hơn, dựa trên các thói quen cũ và lỗi thời được thực hiện bởi các lập trình viên, những người đã học tốt hơn và cải thiện công cụ của họ.

PHP thật may mắn, nó sống cuộc sống của COBOL. COBOL đã tồn tại lâu hơn bất cứ thứ gì ngoại trừ FORTRAN và nó sẽ không biến mất sớm. Có rất nhiều chương trình COBOL được sử dụng hàng ngày cũ hơn so với những người duy trì chúng. Nó có thể không phải là "độ nóng mới", nhưng sẽ luôn có tiền để kiếm được khi làm việc cùng với nó.


4

Tôi nghĩ rằng cũng có thể hữu ích để hiểu được khía cạnh khác của đồng tiền và nhận ra sự thiếu hụt của PHP. Mặc dù PHP đã tiến bộ rất nhiều từ việc trở thành một ngôn ngữ mẫu, nhưng vẫn còn nhiều điều có thể được cải thiện. Có một số điểm mà PHP vẫn còn thiếu: Unicode, các tính năng chức năng, tổ chức của thư viện chuẩn, arrayv.v.

Điều tôi đề nghị là - để đưa ra một cuộc thảo luận mang tính xây dựng về các điểm mạnh và điểm yếu của PHP - có thể tốt để thừa nhận tất cả điều này. "Vâng, tôi biết rằng thư viện tiêu chuẩn PHP không được tổ chức nhiều. Nhưng nếu nó được viết ngày hôm nay, nó có thể sử dụng các không gian tên và API hướng đối tượng". "Vâng, tôi biết rằng mảng mặc định tạo ra một mớ hỗn độn bằng cách trộn các cấu trúc từ điển và mảng. Nhưng nếu muốn một số bộ sưu tập tốt hơn, người ta có thể sử dụng SPL".

Quan điểm của bạn sẽ có kết quả mạnh mẽ hơn nếu bạn cho thấy rằng bạn biết rằng những lý lẽ của người khác có lý do nào đó.


2

Tại sao?

Bất cứ ai khiến bạn cảm thấy bạn phải tự bảo vệ mình (cho dù đó là sự nghiệp, vợ / chồng, thói quen chi tiêu, v.v.) đều lãng phí thời gian của chính họ. Bạn dành thời gian để tự bảo vệ mình chỉ đơn giản là làm nhục những người sai trái - giờ bạn đang lãng phí thời gian của chính mình, cũng như của họ.

Cắt những người này ra khỏi cuộc sống của bạn - bạn tốt hơn nếu không có họ.


4
Vì vậy, câu trả lời là mang nó cá nhân và bỏ qua nó?. Đây là một vấn đề văn hóa, tôi muốn giải quyết nó và cố gắng làm cho lập luận của tôi tốt hơn và ngắn gọn hơn để bắn hạ sự thiếu hiểu biết.
dukeofgaming

3
Trong chân không, tôi đồng ý với lời khuyên của bạn ở đây, nhưng PHP là không thể bảo vệ được. Tôi luôn luôn ngạc nhiên trước cách Mark Zuckerberg đã thành công mặc dù trong khủng khiếp của PHP: codinghorror.com/blog/2008/05/...
Jim G.

1

Không có một đoạn trích ngắn và ngọt ngào nào bạn có thể nói ra để thuyết phục mọi người về sự xứng đáng của PHP và các nhà phát triển của nó, nhưng bạn đã viết một lập luận rất thuyết phục ngay trước khi bạn đặt câu hỏi.


1

Để giải quyết "PHP là một ngôn ngữ xấu", bạn phải tìm ra lý do tại sao cá nhân trong câu hỏi nghĩ rằng đó là một ngôn ngữ xấu. Có lẽ anh ấy đã làm việc trong một dự án tồi được viết bằng PHP. Có lẽ anh ấy không thích tiền tố biến của họ $. Có lẽ chính họ đã cố gắng sử dụng ngôn ngữ và viết lộn xộn không thể nhầm lẫn. Nhiều lập trình viên đến từ các ngôn ngữ lập trình khác nhìn thấy PHP và thấy một mớ hỗn độn, bởi vì điều có ý nghĩa trong PHP không thực sự có ý nghĩa trong ngôn ngữ khác hoặc trên các nền tảng khác. Ví dụ, trong PHP, các mảng là "băng keo của vũ trụ" và được sử dụng để thực hiện khá nhiều thứ, trong khi trong các ngôn ngữ lập trình khác, một điều như vậy sẽ là vô lý.

Tôi sẽ đề nghị một sự kết hợp của các câu trả lời ở đây.

  1. Như tylerl đã nói, bạn phải chứng minh rằng PHP hiện đại tốt hơn đáng kể so với các anh em họ cũ. Đã qua rồi cái sự khó chịu của create_function. Đã qua rồi cái rừng gọi includethủ công khắp nơi.
  2. Công nhận rằng có lỗi trong PHP. Có lỗi trong mọi ngôn ngữ lập trình. Nói cách khác sẽ khiến nhiều lập trình viên nghiêm túc hoàn toàn bỏ qua phản ứng của bạn như là một "fanboi".
  3. Chỉ cho mọi người thấy những điều dễ dàng trong PHP khó với các ngôn ngữ lập trình khác. Ngôn ngữ lập trình được thiết kế để làm cho một số nhiệm vụ dễ dàng, điều này nhất thiết làm cho các nhiệm vụ khác trở nên khó khăn. C? Thao tác bộ nhớ và hack bit thực sự dễ dàng và ngôn ngữ thực sự đơn giản, nhưng duy trì các ứng dụng lớn thì khó. Java? Không có free, và mọi thứ là "OO-ish", nhưng thời gian chạy lớn và OO có thể bị hạn chế. C ++? Cho phép bạn tạo các loại hoạt động chính xác như các loại nguyên thủy (ví dụ int) trong ngôn ngữ, nhưng điều đó đi kèm với số lượng lớn phức tạp. PHP? Làm cho nó thực sự dễ dàng để bắt đầu mà không cần nhiều kiến ​​thức lập trình, nhưng kết quả là có rất nhiều mã rác được đăng trên internet.
  4. Thừa nhận lợi thế phi ngôn ngữ của PHP. Vẫn còn nhiều thứ trong PHP, như một ngôn ngữ có thể ... gây khó chịu khi làm việc. Nhưng nó dễ cấu hình, dễ triển khai và đi kèm với một bộ lớn các thư viện tuyệt vời mà bạn có thể "cắm" vào mà không cần nhiều công việc bổ sung.

Có một nơi cho mọi ngôn ngữ. Chọn ngôn ngữ phù hợp với vấn đề trong tay, đừng cố gắng mang một ngôn ngữ ưa thích vào những nơi không thuộc về ngôn ngữ đó.


1
-1: Tại sao bạn cố gắng bảo vệ PHP? Nó thật tệ: mã hóa kinh dị.com / blog / 2008/05
Jim

1
@JimG.: Bởi vì đó là những gì OP yêu cầu tôi làm. Tôi đang chơi người ủng hộ của quỷ ở đây; Tôi thực sự coi thường làm việc với PHP. Nhưng chỉ vì một hệ thống gây khó chịu khi làm việc không có nghĩa là không có những điều tốt về hệ thống đó. Người ta có thể học ngay cả từ các f *** up lớn. :)
Billy ONeal

@BillyONeal Tại sao bạn ghét làm việc với nó? Tự quyết định mọi việc.
johnny

@ John: Hầu hết, chỉ là một ngôn ngữ kịch bản không phù hợp để xây dựng các hệ thống lớn. Các ngôn ngữ script rất tốt cho việc tạo mẫu nhanh, dễ triển khai và đi kèm với các thư viện tiêu chuẩn lớn trong hộp. Nhưng việc xây dựng các hệ thống lớn với chúng thường dẫn đến tình trạng lộn xộn không thể khắc phục được do không thể thực thi các kiểm tra và ràng buộc về thời gian biên dịch. Chính những điều làm cho PHP trở nên linh hoạt và tốt cho các kịch bản kịch bản (ví dụ: các biến được tháo gỡ) gây khó khăn cho việc xây dựng các hệ thống với hơn một vài người sử dụng một thành phần.
Billy ONeal

@ John: Để làm rõ - Tôi không nói rằng việc xây dựng các hệ thống lớn với PHP là không thể - Facebook và Co. là bằng chứng tích cực rằng điều đó là rất có thể. Chỉ là nó kết thúc khó khăn hơn với các ngôn ngữ cung cấp cú pháp thời gian biên dịch tốt hơn và kiểm tra ngữ nghĩa.
Billy ONeal
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.