Mengapa php tidak digunakan oleh perusahaan besar

Saya membuat komentar yang tidak sopan di utas pertanyaan lain yang menyebut PHP sebagai bahasa yang buruk dan mendapat suara yang tidak masuk akal. Ternyata disini banyak sekali orang yang menyukai PHP

Jadi saya benar-benar penasaran. Apa yang saya lewatkan?

Inilah alasan saya untuk tidak menyukainya

  • PHP memiliki penamaan fungsi built-in dan library yang tidak konsisten. Pola penamaan yang dapat diprediksi penting dalam desain apa pun

  • PHP memiliki urutan parameter yang tidak konsisten dari fungsi bawaan, misalnya array_map vs. array_filter yang mengganggu dalam kasus sederhana dan menimbulkan segala macam perilaku tak terduga atau lebih buruk

  • Pengembang PHP terus-menerus mencela fungsi bawaan dan fungsionalitas tingkat rendah. Contoh yang baik adalah ketika mereka menghentikan referensi lewat untuk fungsi. Ini menciptakan mimpi buruk bagi siapa pun yang melakukan, katakanlah, panggilan balik fungsi

  • Kurangnya pertimbangan dalam mendesain ulang. Penghentian di atas menghilangkan kemampuan untuk, dalam banyak kasus, memberikan nilai kata kunci default untuk fungsi. Mereka memperbaikinya di PHP 5, tetapi mereka menghentikan referensi lewat di PHP 4

  • Eksekusi ruang nama yang buruk (sebelumnya tidak ada ruang nama sama sekali). Sekarang ruang nama sudah ada, apa yang kita gunakan sebagai karakter dereferensi? . Karakter yang digunakan secara universal untuk melarikan diri, bahkan di PHP

  • Konversi tipe implisit yang terlalu luas menyebabkan bug. Saya tidak punya masalah dengan konversi implisit, katakanlah, float ke integer atau kembali lagi. Tetapi PHP (terakhir saya periksa) akan dengan senang hati mencoba mengubah array menjadi bilangan bulat secara ajaib

  • Kinerja rekursi yang buruk. Rekursi adalah alat yang sangat penting untuk menulis dalam bahasa apa pun; . Dukungan yang buruk tidak bisa dimaafkan

  • Fungsi tidak peka huruf besar-kecil. Saya tidak tahu apa yang mereka pikirkan tentang yang satu ini. Bahasa pemrograman adalah cara untuk menentukan perilaku ke komputer dan pembaca kode tanpa ambiguitas. Ketidakpekaan huruf menimbulkan banyak ambiguitas

  • PHP mendorong (praktis membutuhkan) penggabungan pemrosesan dengan presentasi. Ya, Anda dapat menulis PHP yang tidak melakukannya, tetapi sebenarnya lebih mudah untuk menulis kode dengan cara yang salah (dari perspektif desain suara).

  • Performa PHP sangat buruk tanpa caching. Apakah ada yang menjual produk caching komersial untuk PHP?

Yang terburuk, PHP meyakinkan orang bahwa mendesain aplikasi web itu mudah. Dan itu memang membuat banyak upaya yang terlibat jauh lebih mudah. Namun faktanya, mendesain aplikasi web yang aman dan efisien adalah tugas yang sangat sulit

Dengan meyakinkan begitu banyak orang untuk mempelajari pemrograman, PHP telah mengajarkan seluruh subkelompok programmer tentang kebiasaan buruk dan desain yang buruk. Itu memberi mereka akses ke kemampuan yang kurang mereka pahami untuk digunakan dengan aman. Hal ini menyebabkan reputasi PHP sebagai tidak aman

(Namun, saya akan dengan mudah mengakui bahwa PHP tidak lebih atau kurang aman daripada bahasa pemrograman web lainnya. )

Apa yang saya lewatkan tentang PHP?

Jadi yakinkan saya sebaliknya


Jawaban Nilai Tertinggi


Saya akan mencoba menanggapi setiap poin-poin Anda

PHP memiliki penamaan fungsi built-in dan library yang tidak konsisten. Pola penamaan yang dapat diprediksi penting dalam desain apa pun

Saya suka dan benci topik ini. Karena pada intinya, isu ini adalah benar. Mengapa beberapa fungsi dua kata dipisahkan dengan garis bawah, dan beberapa tidak? . Tapi di penghujung hari. apakah ini benar-benar penting? . bersih hanya dengan satu klik browser, ini bukan masalah besar. Apakah negatif terhadap PHP sebagai bahasa? . Apakah itu menghalangi kemampuan saya untuk menjadi programmer yang efektif?

Pengembang PHP terus-menerus mencela fungsi bawaan dan fungsionalitas tingkat rendah. Contoh yang baik adalah ketika mereka menghentikan referensi lewat untuk fungsi. Ini menciptakan mimpi buruk bagi siapa pun yang melakukan, katakanlah, panggilan balik fungsi

Secara pribadi, saya pikir ini bukan poin yang bagus. Penghentian diperlukan untuk evolusi suatu bahasa, terutama bahasa yang memiliki kruft sebanyak PHP. PHP mendapat banyak kritik karena "mempermudah menjadi pemrogram yang buruk*" tetapi pada saat yang sama, grup PHP juga mendapat masalah saat mereka mencoba menghapus konstruksi bodoh dari bahasa tersebut, seperti panggilan lewat waktu . Menghilangkan referensi lewat waktu panggilan adalah salah satu langkah terbaik yang pernah mereka lakukan. Tidak ada cara yang lebih mudah bagi pengembang pemula untuk menembak dirinya sendiri selain dengan "fitur" ini

Kurangnya pertimbangan dalam mendesain ulang. Penghentian di atas menghilangkan kemampuan untuk, dalam banyak kasus, memberikan nilai kata kunci default untuk fungsi. Mereka memperbaikinya di PHP 5, tetapi mereka menghentikan referensi lewat di PHP 4

Saya tidak berpikir ada kurangnya pertimbangan sama sekali, saya pikir Anda baru saja tersengat oleh perubahan khusus ini dan dibiarkan dengan rasa asam di mulut Anda. Perubahan bahasa sering diketahui berbulan-bulan jika tidak bertahun-tahun sebelumnya. Panduan migrasi disediakan untuk perpindahan dari 4 ke 5, dan perbedaan versi didokumentasikan dalam manual. Referensi lewat waktu panggilan adalah "fitur" yang mengerikan dan tidak memberi pengembang kekuatan ekspresif apa pun yang tidak bisa mereka dapatkan dengan cara lain. Saya senang itu hilang (bersama dengan omong kosong lain seperti kutipan ajaib)

Eksekusi ruang nama yang buruk (sebelumnya tidak ada ruang nama sama sekali). Sekarang ruang nama sudah ada, apa yang kita gunakan sebagai karakter dereferensi? . Karakter yang digunakan secara universal untuk melarikan diri, bahkan di PHP

Saya memiliki perasaan campur aduk tentang ini. Sebagian dari diri saya berpikir "siapa peduli, pelolosan karakter tidak ada artinya di luar string", dan sebagian dari diri saya berpikir "pasti mereka bisa menggunakan sesuatu yang lebih baik". Tapi bisakah mereka? . Apakah itu pengawasan besar yang sampai 5. 3 PHP tidak pernah memiliki ruang nama sama sekali?

Konversi tipe implisit yang terlalu luas menyebabkan bug. Saya tidak punya masalah dengan konversi implisit, katakanlah, float ke integer atau kembali lagi. Tetapi PHP (terakhir saya periksa) akan dengan senang hati mencoba mengubah array menjadi bilangan bulat secara ajaib

Saya pikir tidak apa-apa untuk tidak setuju dengan bagaimana PHP melakukan ini, tetapi tidak setuju bahwa itu membuat bahasanya "buruk". Tapi tanyakan seberapa besar keinginan saya untuk duduk di topik ini dan berdebat tentang pengetikan yang lemah vs kuat. (P. S. Saya tidak, sama sekali) Sebagai catatan. PHP akan mengeluarkan kesalahan level E_WARNING ketika jenis argumen penting dan tidak dapat diselesaikan dengan paksaan

Kinerja rekursi yang buruk. Rekursi adalah alat yang sangat penting untuk menulis dalam bahasa apa pun; . Dukungan yang buruk tidak bisa dimaafkan

PHP adalah DSL untuk web. Saya telah melakukannya penuh waktu selama 8 tahun dan mungkin menggunakan rekursi 4 atau 5 kali, biasanya untuk beberapa jenis direktori yang mengganggu atau traversal XML. Hanya saja bukan pola yang sering dibutuhkan untuk pengembangan web. Saya tidak memaafkan kinerja yang lambat, tetapi ini adalah masalah akademis yang jauh lebih banyak daripada masalah produksi. Jika Anda membutuhkan kinerja rekursif yang sangat kuat, PHP adalah bahasa yang salah untuk Anda

Fungsi tidak peka huruf besar-kecil. Saya tidak tahu apa yang mereka pikirkan tentang yang satu ini. Bahasa pemrograman adalah cara untuk menentukan perilaku ke komputer dan pembaca kode tanpa ambiguitas. Ketidakpekaan huruf menimbulkan banyak ambiguitas

Saya sangat 100% setuju dengan ini

PHP mendorong (praktis membutuhkan) penggabungan pemrosesan dengan presentasi. Ya, Anda dapat menulis PHP yang tidak melakukannya, tetapi sebenarnya lebih mudah untuk menulis kode dengan cara yang salah (dari perspektif desain suara).

*Hmmm, topik ini terdengar sangat akrab

Tapi serius, saya merasa luar biasa bahwa orang-orang akan mengeluh tentang bahasa yang benar-benar akan 100% membiarkan Anda menerapkan sistem keluaran apa pun yang Anda inginkan (volume dan gaya sistem templating PHP saja yang berbicara tentang ini) - ATAU - lewati semua overhead itu dan . Ini tidak membuat PHP buruk sama sekali. Itu bagian dari apa yang membuat PHP bagus

Performa PHP sangat buruk tanpa caching. Apakah ada yang menjual produk caching komersial untuk PHP?

Apakah yang Anda maksud adalah caching bytecode (seperti akselerator), atau caching keluaran?

Jika yang pertama, maka saya tidak begitu tahu betapa saya peduli dengan topik ini. Akselerator gratis dan mudah dijalankan. Kami dapat berdebat tentang mengapa itu bukan bagian dari bahasa tetapi pada akhirnya, menurut saya itu tidak terlalu penting

Jika Anda berbicara tentang caching keluaran maka saya tidak tahu harus berkata apa kepada Anda. SETIAP proyek web dengan lalu lintas yang signifikan membutuhkan caching (seed podcast #27, misalnya). Ini sama sekali bukan masalah khusus PHP

Singkatnya, saya pikir Anda menganggap PHP sebagai bahasa yang "buruk" dengan cara yang sangat akademis. Dan di posting Anda sebelumnya, Anda mungkin ditolak oleh orang-orang seperti saya yang menggunakan PHP untuk "menyelesaikan sesuatu"


Jawaban Teratas Kedua


Semua kritik Anda (dan lebih banyak lagi) valid. Anda diperbolehkan dan bahkan diharapkan untuk membenci PHP

Tapi, sekali lagi, itu memiliki beberapa manfaat

  • Di mana-mana
  • Cepat (terutama menggunakan cache opcode)
  • Komunitas besar (dan dokumentasi hebat)
  • Bekerja

Terakhir, Anda dapat mengatasi banyak jika tidak semua kerugian dengan menulis kode bagus yang akan Anda tulis dalam bahasa lain. Anda dapat menulis kode yang solid, aman, dan berbau harum di PHP, yang berkali-kali akan berjalan lebih cepat dan lebih mudah untuk dihosting dan diskalakan daripada banyak alternatif


Jawaban Peringkat Teratas Ketiga


Apa yang saya lewatkan tentang PHP?

Sederhana. Fakta bahwa pemrogram yang buruk menjadi sangat defensif tentang bahasa mereka. ;) PHP mudah dipelajari, jauh lebih mudah daripada alternatifnya, dan setelah Anda mempelajarinya, tidak terlalu jelas 1) apa yang salah dengan PHP, 2) bagaimana alternatifnya lebih baik, dan 3) cara beralih ke, dan

Dan mungkin fakta bahwa, alternatif apa yang dimiliki orang? . Dan itu lambat. Jadi mungkin "kekuatan" PHP sebenarnya adalah tidak ada alternatif yang baik. Setidaknya inilah mengapa saya menjauh dari semua pemrograman web jika memungkinkan. PHP menyebalkan, dan saya juga tidak terlalu tertarik dengan alternatif mana pun

PHP memiliki begitu banyak masalah mendasar yang bahkan tidak lucu. Dari kurangnya dukungan unicode, hingga banyak konversi tipe implisit yang sering menyebabkan celah keamanan yang tidak terduga, hingga perpaduan sempurna antara presentasi dan. yang lainnya, atau ke modul database default yang tidak (terakhir saya periksa) menggunakan kueri berparametri. Kita berbicara tentang bahasa yang dibuat untuk dua hal, akses basis data dan menghasilkan HTML, dan yang buruk pada keduanya

Itu hanya kekacauan yang tidak menyenangkan, bahasa yang dirancang oleh orang-orang yang tidak memenuhi syarat, atau tidak mampu, untuk merancang sebuah bahasa. ;)

Apakah perusahaan besar menggunakan PHP?

Mengapa perusahaan besar menggunakan Java dan bukan PHP?

Java digunakan dalam proyek yang kompleks untuk tingkat perusahaan, sedangkan PHP digunakan dalam proyek dengan kompleksitas yang lebih sedikit dan ideal untuk start-up . Java hadir sebagai bahasa tujuan umum, sedangkan PHP dibuat untuk membuat halaman web dinamis dan melayani banyak kegunaan sekarang.

Mengapa PHP tidak digunakan?

Penyebutan pertama bahwa PHP sedang sekarat dapat ditemukan di web sejak 2013. Saat itu Software Gunslinger menerbitkan sebuah artikel (yang sangat saya rekomendasikan. ) mengatakan bahwa PHP akan mati karena tidak mendukung proses jangka panjang dan karena kekurangan asinkronis . Dan itu faktanya, PHP tidak dibuat untuk itu.

Mengapa PHP tidak cocok untuk aplikasi web berbasis konten raksasa?

Ini karena PHP sebagai bahasa scripting tidak mengizinkan modifikasi atau perubahan apa pun pada kerangka perilaku inti aplikasi web .