Bagaimana cara mematahkan paradigma “php is a bad language”? [Tutup]

19

PHP bukan bahasa yang buruk (atau setidaknya tidak seburuk yang disarankan beberapa orang). Saya memiliki guru yang bahkan tidak tahu PHP berorientasi objek sampai saya memberi tahu mereka. Saya punya klien yang segera tidak mempercayai kami ketika kami mengatakan bahwa kami adalah pengembang PHP dan menanyai kami karena tidak menggunakan bahasa dan kerangka kerja yang bagus seperti Django atau RoR, atau bahasa "perusahaan dan padat" seperti Java dan ASP.NET.

Facebook dibangun di atas PHP. Ada banyak proyek solid yang memberi daya pada web seperti Joomla dan Drupal yang digunakan dalam perusahaan dan pemerintah. Ada kerangka kerja dan perpustakaan yang memiliki beberapa arsitektur terbaik yang pernah saya lihat di semua bahasa (Symfony 2, Doctrine). PHP memiliki dokumentasi terbaik yang pernah saya lihat dan komunitas profesional yang besar.

PHP memiliki fitur-fitur OO canggih seperti refleksi, antarmuka, apalagi PHP sekarang mendukung penggunaan ulang horizontal secara asli dan bersih melalui ciri - ciri .

Ada programmer dan kiddies skrip yang buruk yang memberikan reputasi buruk pada PHP, tetapi memberi daya pada komunitas PHP pada saat yang sama, dan karena begitu mudahnya menyelesaikan sesuatu, Anda sering dapat melakukan hal-hal dengan cara yang salah, memang, tetapi mengapa menyalahkan bahasa?.

Sekarang, untuk membahas pertanyaan aktual yang dapat dijawab: apa yang akan menjadi argumen yang bagus dan solid dan singkat dan manis untuk menghindari disukai dan berhenti berprasangka dalam satu gerakan dan mempertahankan kehormatan Anda ketika Anda mengatakan Anda adalah pengembang PHP? .

(kue gratis dengan krim kocok untuk mereka yang memiliki bukti empiris meyakinkan seseorang — klien atau lainnya — di tempat)

PS: Kami menggunakan Symfony , dan kode berakhir dengan indah dan dapat dipelihara

PPS: Facebook adalah ditulis dalam PHP, dikompilasi untuk C ++ melalui HipHop dan digunakan pada Hadoop. Di sini: http://arstechnica.com/business/2012/04/exclusive-a-behind-the-scenes-look-at-facebook-release-engineering/1/

dukeofgaming
sumber
9
Sebagai permulaan, tandai semua komentar anti-PHP yang tajam pada Programmer. Setidaknya ada satu pengembang PHP di antara moderator yang benar-benar suka menghapusnya ...
yannis
23
Tulis kode PHP yang bagus
Charles Sprayberry
42
Sekedar catatan, saya BENCI BENAR - BENAR ketika orang PHP membawa argumen "FB is build on PHP". Itu bs, itu dibangun di atas sistem terdistribusi besar seperti Hadoop dan bagian-bagian yang benar-benar menyelesaikan pekerjaan adalah dalam C. PHP digunakan untuk templating dan UI, itu hampir tidak cukup untuk mengatakan "FB dibangun di atas PHP" ...
TC1
10
@NB Ya, tetapi dalam kasus ini, IMHO mengatakan bahwa "FB dibangun di atas PHP" seperti mengatakan bahwa StackOverflow dibangun di atas CSS dan JavaScript, karena memiliki beberapa sentuhan UI yang bagus di sana-sini ...
TC1
13
Saya tidak akan mempekerjakan Anda karena saya tidak ingin mempertahankan kode PHP. PHP mendapatkan fitur-fitur seperti Perl dan JavaScript dan bahasa-bahasa lain yang terburu-buru, tetapi intinya telah dirancang dengan tergesa-gesa dan orang tidak dapat mengubahnya. Mungkin Anda harus mempertimbangkan mempelajari beberapa Django dan RoR dan Grails dan karenanya menjadi agnostik bahasa.
Pekerjaan

Jawaban:

40

Satu-satunya jawaban yang saya miliki adalah ini: semuanya menyebalkan.

Anda dapat menemukan berargumen melawan OOP yang bermanfaat (pencarian cepat akan mengungkapkannya) versus pemrograman fungsional atau prosedural. Anda sepertinya mengindikasikan bahwa dukungan OO PHP membelanya.

Google kosong menyebalkan dan Anda akan menemukan hasil untuk apa pun. Python menyebalkan . Ruby payah . Rails menyebalkan . PHP payah . Jawa menyebalkan .

Anda ingin tahu apa yang sebenarnya menyebalkan? Programmer. Programmer payah. Setiap pengembang yang baik harus dapat membuat aplikasi yang luar biasa, ujung depan dan ujung belakang, terlepas dari bahasa - bahkan jika mereka tidak terbiasa dengan bahasa! (Artinya, seorang programmer yang baik harus dapat belajar dan bekerja dengan bahasa apa pun secara efektif).

Perhatikan juga bahwa keberhasilan suatu aplikasi tidak ada hubungannya dengan kodenya. Saya pernah mendengar bahwa kode Facebook itu buruk, tetapi demi Tuhan itu efektif. Hal yang sama mungkin berlaku untuk Wikimedia (Wikipedia dibangun di atas PHP dan juga situs web yang sangat populer). Yang penting adalah hasil!

PHP adalah bahasa yang paling saya kenal secara pribadi. Saya akan mempertahankannya sampai mati. Saya telah bekerja dengan kerangka kerja PHP, kode PHP langsung, dan PHP, python, dan ruby (dan bahkan Java) semua untuk pengembangan web. Saya tidak bisa mengatakan bahwa yang satu lebih baik dari yang lain. Yang lebih penting adalah pengembang dan algoritma. Saya telah melihat kode yang sangat bagus dan benar-benar mengerikan dalam banyak bahasa (terutama PHP karena saya memiliki begitu banyak pemaparan).


Sekarang untuk pertanyaan Anda: itu tergantung pada siapa yang Anda hadapi

Pengusaha

Mereka sangat peduli dengan hasil dan efektivitas biaya. Fakta bahwa Facebook, Wikipedia, dan Wordpress yang sangat sukses menggunakan PHP harus lebih dari cukup untuk meyakinkan mereka bahwa itu adalah bahasa yang efektif untuk membangun aplikasi yang sukses.

Programmer

Biarkan kode Anda berbicara sendiri. Jika pengembang mengatakan bahwa PHP lebih rendah dalam beberapa hal, tunjukkan pada mereka beberapa kode PHP yang Anda yakini efektif. Bukti puding ada pada saat makan.

Pil Ledakan
sumber
8
"Setiap pengembang yang baik harus dapat membuat aplikasi yang luar biasa, ujung depan dan ujung belakang, terlepas dari bahasa" - ulangi itu setelah Anda mencobanya di Malbolge.
Michael Borgwardt
5
Saya tidak berpikir seorang programmer yang baik dapat menulis kode yang baik dalam bahasa yang dia tidak tahu. Layak, mungkin, tapi tidak bagus. Itu karena menulis kode yang baik dalam bahasa apa pun membutuhkan pengetahuan yang baik tentang perpustakaan dan bahasa itu sendiri.
svick
4
Saya tidak setuju; pengembang yang baik harus dapat membiasakan diri dengan pengetahuan yang diperlukan untuk menulis aplikasi yang baik. Pengetahuan yang baik tentang perpustakaan dan sintaksis adalah penting, tetapi itu adalah sesuatu yang bisa diambil oleh pengembang yang baik. Yang jauh lebih sulit adalah algoritma dan konsep (dan mungkin kesabaran) .. bahkan jika bahasanya adalah Malbolge. Atau mungkin saya sedang memikirkan pengembang yang hebat .
Pil Ledakan
7
success of an application has nothing to do with its code<- Benar. Tetapi ketika orang mengatakan bahwa "PHP adalah bahasa yang buruk", mereka tidak berarti "aplikasi yang ditulis dalam PHP buruk", tetapi, mereka berarti "aplikasi yang ditulis dalam PHP sering tidak menyenangkan untuk dikerjakan karena kode spaghetti". Ada banyak aplikasi hebat yang ditulis dalam PHP, pastinya. Tetapi saya tidak berpikir jawaban ini membahas apa yang dimaksud pemrogram ketika mereka menyebut PHP "buruk".
Billy ONeal
2
@BillyONeal Apa metrik Anda untuk apakah suatu bahasa "baik" atau "buruk?" Aplikasi adalah segalanya .. tidak ada yang peduli dengan kode . Linus Torvalds terus mengoceh tentang betapa buruknya C ++ - Anda dapat mengatakan bahwa ada sesuatu yang buruk karena beberapa programmer menulis kode buruk di dalamnya.
Pil Ledakan
20

PHP memiliki sejarah yang kotor. Jauh lebih baik sekarang bahkan beberapa waktu yang lalu, tetapi ada waktu, waktu yang sangat lama, di mana banyak praktik dan pola yang buruk didorong dan sulit untuk dihindari. Ada seluruh generasi kode PHP yang mengerikan di luar sana yang masih berkeliaran, dan sejauh programmer baru belajar dengan membaca kode lama, mereka belajar perilaku buruk. PHP mungkin sekarang tidak pantas mendapatkan reputasi hitamnya, tetapi tentu saja membuatnya diterima.

Taruhan terbaik Anda untuk mempertahankan PHP adalah dengan hati-hati menjauhkan dan membedakan keadaan terkini dari sejarah yang sudah dikenal semua orang. Anda dapat mengatakan bahwa PHP bukan bahasa yang buruk, tetapi jika Anda berbicara dengan seseorang yang telah berkecimpung di industri ini selama beberapa tahun, ingatan mereka mengatakan sebaliknya.

Tunjukkan pada mereka bagaimana tim PHP telah belajar dari kesalahan mereka dan mengubah bahasa menjadi lebih baik. Lewatlah sudah hari-hari kutipan sihir dan mendaftar global. Hilang adalah paradigma global-segalanya, dan safe-mode, dan mysql_escape_string. Jelaskan kepada mereka bahwa pemrogram PHP nyata selalu menggunakan ruang nama dan kueri parameter, mereka menghindari fungsi yang sudah usang dan selalu meletakkan kode pustaka mereka di luar root dokumen.

PHP telah berubah, dan programmer PHP telah berubah. Itulah sebabnya PHP adalah platform yang luar biasa seperti saat ini. Juga, itu satu-satunya platform yang Anda tahu pelanggan Anda akan telah diinstal sebelumnya. Itu sangat besar.

Sebagai catatan, saya akan merekomendasikan untuk tidak mengutip mesin dan kerangka kerja CMS yang ada sebagai kemenangan besar untuk PHP. Anda menjalankan risiko mereka menunjukkan hal-hal seperti studi keamanan Websense dari 4 hari yang lalu menunjukkan bahwa 94% dari infeksi situs web baru-baru ini terhadap situs web PHP yang menjalankan perangkat lunak seperti Joomla dan Wordpress. Itu bukan jenis perusahaan yang ingin Anda temui. Alih-alih menunjukkan bahwa kode Anda akan jauh lebih aman daripada semua hal lain.

tylerl
sumber
1
+1 - tetapi - tetapi - Mengklaim bahwa kode Anda akan "jauh lebih aman" daripada ulasan rekan kode oleh beberapa profesional tidak akan benar-benar menampung banyak air bagi siapa saja yang setengah berpengalaman dalam keamanan. Semua orang menulis bug keamanan. Caranya adalah dengan memperbaiki mereka satu langkah di depan orang jahat.
Billy ONeal
@BillyONeal ya. Paragraf terakhir dimaksudkan untuk membuat Anda sedikit ... aneh, dan membuat Anda benar-benar memikirkan kembali pendekatan Anda terhadap keamanan. Saya melakukan banyak penelitian tentang keamanan webapps PHP vs non-PHP, dan laporannya mengganggu, secara besar-besaran condong terhadap PHP. Bukan untuk mengatakan bahwa PHP itu buruk, tetapi keamanan adalah masalah nyata.
tylerl
1
"Juga, itu satu-satunya platform yang Anda tahu telah diinstal oleh pelanggan Anda" Pernyataan ini tampaknya benar-benar salah bagi saya, Tidak setiap server dikerahkan menggunakan tumpukan LAMPhp, juga tidak ada distribusi server linux umum yang pernah saya coba kirim dengan PHP sudah diinstal sebelumnya. Namun, setiap distribusi linux yang pernah saya gunakan tidak dikirimkan dengan Python 2.x. Saya menduga beberapa utilitas umum mengandalkannya.
ThorSummoner
9

PHP adalah COBOL web. Kedua bahasa tidak dihormati, namun banyak orang membuat bangunan hidup dan memelihara sistem yang tertulis di dalamnya, dan mereka hadir dalam volume di hampir setiap sistem komputer utama untuk dunia asli mereka ( yaitu , masing-masing bisnis web dan komersial). Kedua bahasa dipandang rendah oleh para praktisi dari bahasa lain yang lebih populer, berdasarkan pada kebiasaan lama dan usang yang dipraktikkan oleh para programmer yang sejak itu belajar lebih baik dan meningkatkan perangkat mereka.

PHP seharusnya sangat beruntung, sehingga bisa hidup COBOL. COBOL telah ada lebih lama daripada FORTRAN, dan itu tidak akan hilang dalam waktu dekat. Ada banyak program COBOL dalam penggunaan sehari-hari yang lebih tua daripada orang yang memeliharanya. Ini mungkin bukan "kesegaran baru", tetapi akan selalu ada uang yang didapat dari bekerja di sana dan bersamanya.

Ross Patterson
sumber
4

Saya pikir mungkin juga berguna untuk memahami sisi lain dari koin, dan mengenali kekurangan PHP. Sementara PHP telah banyak maju dari menjadi bahasa templat, masih ada banyak hal yang dapat ditingkatkan. Ada beberapa titik di mana PHP masih kurang: Unicode, fitur fungsional, organisasi perpustakaan standar, arraydan sebagainya.

Apa yang saya sarankan adalah - untuk membuat diskusi yang konstruktif tentang kekuatan dan kelemahan PHP - mungkin baik untuk mengakui semua ini. "Ya, saya tahu bahwa perpustakaan standar PHP tidak sangat terorganisir. Tetapi jika ditulis hari ini, itu dapat menggunakan namespaces dan API berorientasi objek". "Ya, saya tahu bahwa array default membuat sedikit berantakan dengan mencampur struktur kamus dan array. Tetapi jika seseorang menginginkan beberapa koleksi yang lebih baik, seseorang dapat menggunakan SPL".

Pandangan Anda akan menghasilkan lebih kuat jika Anda menunjukkan bahwa Anda tahu bahwa argumen orang lain punya alasan.

Andrea
sumber
2

Mengapa?

Siapa pun yang membuat Anda merasa harus membela diri (apakah itu karier, pasangan, kebiasaan belanja, dll.) Membuang-buang waktu mereka sendiri. Anda meluangkan waktu untuk membela diri hanyalah menghina orang-orang yang salah - sekarang Anda menyia-nyiakan waktu Anda sendiri, juga waktu mereka.

Potong orang-orang ini dari hidup Anda - Anda lebih baik tanpa mereka.

JK
sumber
4
Jadi, jawabannya adalah menganggapnya pribadi dan mengabaikannya? Ini adalah masalah budaya, saya lebih suka mengatasinya dan mencoba mendapatkan argumen saya lebih baik dan lebih ringkas untuk menghilangkan kebodohan.
dukeofgaming
3
Dalam ruang hampa, saya setuju dengan saran Anda di sini, tetapi PHP tidak dapat dipertahankan. Saya selalu kagum dengan bagaimana Mark Zuckerberg berhasil terlepas dari keburukan PHP: codinghorror.com/blog/2008/05/…
Jim G.
1

Tidak ada one-liner pendek dan manis yang bisa Anda coba untuk meyakinkan orang-orang tentang kelayakan PHP dan pengembangnya, tetapi Anda menulis argumen yang sangat meyakinkan tepat sebelum Anda mengajukan pertanyaan.

CFL_Jeff
sumber
1

Untuk mengatasi "PHP adalah bahasa yang buruk", Anda harus mencari tahu mengapa orang tersebut menganggap itu bahasa yang buruk. Mungkin dia bekerja pada proyek buruk yang ditulis dalam PHP. Mungkin dia hanya tidak suka mengawali variabel mereka dengan $. Mungkin mereka sendiri telah mencoba menggunakan bahasa itu dan menulis kekacauan yang tidak dapat dipertahankan. Banyak programmer yang datang dari bahasa pemrograman lain melihat PHP dan melihat kekacauan, karena apa yang masuk akal dalam PHP tidak benar-benar masuk akal dalam bahasa lain atau pada platform lain. Sebagai contoh, dalam PHP, array adalah "lakban alam semesta", dan digunakan untuk mencapai hampir semua hal, sedangkan dalam bahasa pemrograman lain hal seperti itu tidak masuk akal.

Saya akan menyarankan kombinasi jawaban di sini.

  1. Seperti yang dikatakan tylerl , Anda harus menunjukkan bahwa PHP modern jauh lebih baik daripada sepupunya yang lebih tua. Lewatlah sudah kemalasan create_function. Lewatlah sudah hutan panggilan includesecara manual di mana-mana.
  2. Mengakui bahwa ada kesalahan dalam PHP. Ada kesalahan dalam setiap bahasa pemrograman. Mengatakan sebaliknya akan membuat banyak programmer yang serius mengabaikan jawaban Anda sebagai "fanboi".
  3. Tunjukkan kepada orang-orang hal-hal yang mudah di PHP yang sulit dalam bahasa pemrograman lain. Bahasa pemrograman dirancang untuk membuat beberapa tugas mudah, yang tentu membuat tugas-tugas lain sulit. C? Manipulasi memori dan peretasan bit sangat mudah, dan bahasanya sangat sederhana, tetapi mempertahankan aplikasi besar sulit. Jawa? Tidak punya free, dan semuanya "OO-ish", tetapi runtime besar dan OO dapat membatasi. C ++? Memungkinkan Anda membuat tipe yang berperilaku persis seperti tipe primitif (mis. Int) dalam bahasa tersebut, tetapi itu disertai dengan kerumitan dalam jumlah besar. PHP? Membuatnya sangat mudah untuk memulai tanpa banyak pengetahuan pemrograman, tetapi sebagai hasilnya memiliki banyak dan banyak kode sampah yang diposting di internet.
  4. Mengakui keunggulan non-bahasa PHP. Masih ada banyak hal dalam PHP, sebagai bahasa yang bisa ... menjengkelkan untuk dikerjakan. Tapi itu mudah dikonfigurasikan, mudah digunakan, dan dilengkapi dengan sejumlah besar pustaka hebat yang bisa Anda "pasang" tanpa banyak pekerjaan tambahan.

Ada tempat untuk setiap bahasa. Pilih bahasa yang sesuai dengan masalah yang dihadapi, jangan mencoba untuk memilih bahasa yang disukai di tempat-tempat yang bukan tempatnya.

Billy ONeal
sumber
1
-1: Mengapa Anda mencoba mempertahankan PHP? Menyebalkan: codinghorror.com/blog/2008/05/...
Jim G.
1
@ Jimg .: Karena itulah yang diminta OP lakukan. Saya bermain advokat iblis di sini; Saya benar-benar benci bekerja dengan PHP sendiri. Tetapi hanya karena suatu sistem mengganggu untuk bekerja dengan tidak berarti bahwa tidak ada hal-hal baik tentang sistem itu. Seseorang dapat belajar bahkan dari orang-orang penting. :)
Billy ONeal
@BillyONeal Mengapa Anda benci bekerja dengannya? Memutuskan hal-hal sendiri.
johnny
@ Johnny: Sebagian besar, hanya menjadi bahasa scripting yang tidak cocok untuk membangun sistem besar. Bahasa scripting sangat bagus untuk pembuatan prototipe cepat, kemudahan penyebaran, dan dilengkapi dengan perpustakaan standar besar di dalam kotak. Tetapi membangun sistem besar dengan mereka sering mengakibatkan kekacauan yang tidak dapat dipertahankan karena ketidakmampuan untuk menegakkan pemeriksaan waktu kompilasi dan kendala. Hal-hal yang membuat PHP fleksibel dan bagus untuk skenario skrip (misalnya variabel tidak diketik) membuatnya sulit untuk membangun sistem dengan lebih dari beberapa orang yang menggunakan komponen.
Billy ONeal
@ Johnny: Untuk memperjelas - Saya tidak mengatakan bahwa membangun sistem besar dengan PHP tidak mungkin - Facebook dan Co adalah bukti positif bahwa itu sangat mungkin. Hanya saja itu berakhir menjadi lebih sulit daripada dengan bahasa yang memberikan sintaks waktu kompilasi dan pemeriksaan semantik yang lebih baik.
Billy ONeal