Bagaimana tarif PHP5 dengan versi bahasa yang lebih lama

8

Saya ingin belajar PHP untuk pengembangan web tetapi telah ditarik kembali karena komentar seperti berikut * :

  • PHP bagus tetapi menghasilkan kode spageti
  • PHP bagus tapi Python adalah materi pernikahan
  • PHP tidak memiliki hal-hal yang Anda dapatkan dalam bahasa lain seperti C # atau Java

Tetapi untuk PHP5 saya telah melihat beberapa komentar yang menjanjikan. Jadi, pertanyaan saya adalah: Bagaimana tarif PHP5 dengan versi bahasa sebelumnya dan apakah cukup baik sekarang untuk belajar untuk pengembangan web.

* Komentar hanya untuk referensi agar tidak memicu perang api. Tidak ada perbandingan PHP dengan bahasa lain yang diminta di sini. Berikan komentar hanya di PHP5 dan bagaimana perbandingannya dengan versi sebelumnya.

Pankaj Upadhyay
sumber
8
PHP tidak menghasilkan kode spaghetti - programmer PHP yang buruk menghasilkan kode spaghetti
HorusKol
Mengapa Anda memasukkan komentar tentang PHP dan bahasa lain dan bagaimana mereka menghasut keraguan tetapi tidak ingin ada diskusi tentang ini dalam jawaban?
phant0m

Jawaban:

17

Saat membahas bahasa, dua kutipan Stroustrup ini selalu muncul di benak:

Siapa pun yang datang kepada Anda dan mengatakan bahwa ia memiliki bahasa yang sempurna adalah naif atau seorang salesman.

dan

Hanya ada dua jenis bahasa: yang dikeluhkan orang dan yang tidak digunakan siapa pun.

Sekarang untuk pertanyaan yang ada. Sebagian besar kebencian sebagian besar diarahkan pada PHP4. PHP5 pertama kali dirilis pada Juli 2004 (beta setahun sebelumnya) dan versi terakhir PHP4 adalah 4.4.9 dirilis pada Agustus 2008 . Tidak ada alasan yang sah untuk menggunakan PHP4 lagi, kecuali tentu saja Anda memiliki beberapa aplikasi lawas. PHP4 tidak lagi didukung oleh grup PHP, dan kami semua berharap ini segera menghilang.

Kesenjangan antara dua versi lebih besar dari biasanya di antara dua rilis utama, karena mesin di belakang penerjemah ditulis ulang dari awal, dan termasuk model objek baru. Rilis PHP5 kira-kira bertepatan dengan rilis MySQL5, sebuah perbaikan besar dari MySQL. PHP biasanya digabungkan dengan MySQL dan versi kelima dari keduanya membahas beberapa masalah dan membawa mereka ke kecepatan dengan kompetisi. MySQL juga tunduk pada komentar FUD , tetapi, yah, itu adalah basis data di belakang Google AdWords .

PHP 5.3 adalah rilis utama dalam segala hal kecuali nama. Banyak fitur yang dimaksudkan untuk PHP6 ditemukan di 5.3 dan untuk setiap 5.2 pengembang di luar sana, saya sangat menyarankan untuk bermigrasi ke 5.3+ lebih cepat daripada nanti. Rilis saat ini, 5.4, mencakup beberapa fitur luar biasa (antara lain):

Sekarang untuk komentar spesifik Anda:

PHP bagus tetapi menghasilkan kode spageti

Itu sama sekali tidak benar. Tidak ada bahasa yang menghasilkan kode apa pun, selalu tergantung pada pengembang untuk mengacaukannya, kode spageti dimungkinkan di setiap bahasa di luar sana. Yang benar adalah bahwa PHP memiliki entry barrier yang sangat rendah dibandingkan dengan bahasa populer lainnya, oleh karena itu jauh lebih mudah bagi pengembang yang tidak berpengalaman untuk menulis kode yang buruk (tetapi berfungsi). Tetapi itu adalah efek samping dari setiap bahasa yang mudah dipelajari.

Selain itu, PHP tidak menerapkan gaya atau paradigma tertentu, dan Anda selalu dapat memutuskan apa yang harus dilakukan. Saya selalu menganggap ini sebagai hal yang baik, sementara yang lain melihatnya sebagai titik kritik yang valid. Anda harus memutuskan sendiri.

PHP bagus tapi Python adalah materi pernikahan

PHP tidak memiliki hal-hal yang Anda dapatkan dalam bahasa lain seperti C # atau JAVA

Ya itu. Dan bahasa tujuan-umum X kekurangan banyak hal yang Anda dapatkan di PHP. Seperti menjadi portabel di seluruh sistem operasi DAN lintas server http, dan dukungan untuk setiap perpustakaan pihak ketiga yang dapat dibayangkan yang akan berguna dalam lingkungan pengembangan web. Anda harus memahami bahwa PHP tidak kekurangan hal-hal penting , jika itu PHP akan mati lama. Perbandingan antara bahasa serba guna X dan bahasa serba guna lainnya dengan PHP adalah fallacy, apel dan jeruk. Meskipun PHP menawarkan beberapa fasilitas untuk mendukung gagasan bahwa itu untuk tujuan umum, bukan, itu adalah bahasa web.

Anda harus ingat bahwa jalur evolusi PHP sangat berbeda dari bahasa tujuan umum X : PHP tumbuh dan berkembang, itu tidak dirancang. Setiap kali fitur ditambahkan ke bahasa keluar dari kebutuhan aktual, tidak sesuai dengan beberapa cita-cita imajiner dari apa bahasa seharusnya. Bahasa adalah alat pertama dan terpenting, dan PHP sangat sempurna.

Saya tidak memiliki apa pun yang bertentangan dengan bahasa tujuan umum X , saya semua memilih alat yang tepat untuk pekerjaan itu. Saya selalu mencampur dan mencocokkan, dan saya mengkode dalam Java dan Python juga, kadang-kadang paralel dengan PHP. Tapi PHP adalah satu-satunya yang pernah saya pertimbangkan untuk menikah. :)

Jika Anda mempertimbangkan untuk memulai dengan PHP, tentu saja Anda harus mulai dengan versi stabil terbaru, seperti yang Anda lakukan dalam bahasa lain.

yannis
sumber
Saya akan menambahkan beberapa ketidakcocokan antara PHP4 dan 5. Anda memang lupa pengumpulan sampah untuk PHP 5.3.
deadalnix
1
@deadalnix Saya tidak menambahkan ketidakcocokan antara PHP4 dan PHP5, karena saya pikir daftar seperti itu hanya berguna jika Anda mempertimbangkan untuk menggunakan PHP4. Maksud saya adalah jangan menggunakan PHP4 untuk alasan apa pun, hanya karena sudah sangat tua (PHP5 sudah ada selama 3+ tahun). Juga saya tidak lupa Garbage Collection, bukan maksud saya untuk membuat daftar definitif tentang apa yang baru di PHP5.3 (daftar seperti itu dapat ditemukan pada manual), hanya untuk menyoroti beberapa fitur tersebut dalam konteks pertanyaan.
yannis
6

PHP telah "cukup baik" untuk pengembangan web untuk waktu yang lama . Seperti bahasa pemrograman apa pun, kualitas kode bergantung pada keterampilan pengembang menulisnya.

Satu kritik umum terhadap PHP adalah fleksibilitasnya membuatnya mudah bagi pengembang yang tidak berpengalaman untuk menulis kode yang buruk atau "spageti". Ini sebagian besar karena ia mencoba untuk secara simultan merangkul sejumlah paradigma yang kadang-kadang konflik, diimplementasikan dengan buruk, atau tidak bertautan dengan baik.

  • Server-side scripting (PHP) disandingkan dengan kode sisi-klien (HTML + Javascript) tanpa modularitas adalah umum, hampir dianjurkan, sehingga merugikan kejelasan & keterbacaan.

  • Ini umumnya ditulis dalam gaya imperatif, tetapi menyediakan mekanisme untuk orientasi objek. Ini dengan mudah menghasilkan gaya campuran dan sering dapat menyebabkan desain yang buruk.

  • Desain berorientasi objek (menurut saya) kurang didukung di PHP4. Ini adalah salah satu area yang ditingkatkan secara signifikan oleh PHP5 (misalnya dengan pengubah akses, kelas abstrak, resolusi ruang lingkup yang ditingkatkan ).

  • Pengetikan dinamis PHP memungkinkan kesalahan run-time yang bisa dihilangkan dengan pengecekan tipe statis. Ini melekat pada desain semua versi PHP dan tidak akan berubah dalam waktu dekat; beban memvalidasi jenis objek diserahkan kepada programmer.

Perubahan dalam model OOP PHP5 melakukan banyak hal untuk mendorong desain yang baik bergerak maju, tetapi jangan menambahkan disinsentif untuk mencegah praktik buruk yang disebutkan di atas.

rampok
sumber
2

PHP memiliki beberapa masalah signifikan dalam dirinya sendiri, tetapi itu terutama dari variasi gangguan: Perpustakaannya tidak konsisten dan agak skizofrenia, tidak memiliki string sebagai objek kelas satu, hal-hal seperti itu. Itu tidak memaksa Anda untuk menulis kode yang buruk, dan itu bekerja dengan cukup baik untuk apa yang dilakukannya - menulis halaman web. PHP Anda akan sebaik yang Anda perjuangkan; sangat mungkin untuk menulis PHP yang sangat prosedural dan terlihat seperti kode C, dan sangat mungkin untuk menulis PHP yang terlalu Berorientasi Objek dan terlihat seperti Java. Sebagai seseorang yang berkembang dalam PHP setiap hari, saya suka beberapa hal tentangnya dan membenci beberapa hal tentangnya dan tidak bisa menunggu beberapa fungsi 5.4 (seperti Ciri dan fungsi waras mengembalikan dereferencing), tapi saya dengan sepenuh hati mendorong seseorang yang berpikir untuk memilih itu untuk melakukannya.

EricBoersma
sumber
0

php5 adalah versi yang jauh lebih baik dari php4.

Kebanyakan tetapi tidak semua kode php4 bekerja di php5.

Apa yang benar-benar berubah adalah Object Model yang jauh lebih baik, yang memperbaiki banyak keterbatasan dan keanehan yang melekat dalam implementasi OO sebelumnya, tetapi, yang sebagian besar tidak sesuai dengan versi sebelumnya.

Dokumen di sini

Komentar lain memiliki validitas tetapi bukan "tidak jalan"

"PHP itu bagus tetapi menghasilkan kode spaghetti" - Anda dapat menghasilkan semua jenis pasta dalam bahasa apa pun, tetapi, php, tidak melakukan apa pun untuk mencegah pembuat kode yang tidak berpengalaman menulis sarang tikus dari kode tidak terstruktur. Sebaliknya Anda dapat menulis kode yang bagus dalam bahasa apa pun, programmer yang terampil tidak memiliki masalah menulis php terstruktur dengan baik.

"PHP itu bagus tapi Python adalah materi perkawinan" - Ini bahasa yang bagus tetapi ada beberapa kerangka kerja web yang beragam yang semuanya memiliki poin yang sangat bagus, tetapi, tidak ada yang benar-benar lepas landas, yang semuanya baik-baik saja, tetapi ada Python / Kerangka kombinasi pilihan Anda akan selalu menjadi keahlian khusus.

"PHP ketinggalan barang yang Anda dapatkan dalam bahasa lain seperti C # atau JAVA" - php memiliki dukungan pustaka yang paling beragam dan diimplementasikan dengan baik dari bahasa apa pun kecuali perl. Ada beberapa tempat kosong seperti analisis statistik, dan, pemrosesan vektor. Tetapi umumnya jika Anda ingin melakukan sesuatu, pencarian cepat PEAR akan menemukan perpustakaan yang melakukannya. Bahasa itu sendiri lebih sederhana daripada C # atau Java - tetapi kesederhanaan dari sintaks dasar ditambah "Mengetik Bebek" berarti Anda dapat melakukan apa saja di php yang dapat Anda lakukan di Jawa dengan cara yang lebih mudah dibaca dan elegan.

James Anderson
sumber
Pernyataan "PHP memiliki pustaka yang paling beragam dan diterapkan dengan baik ..." masih bisa diperdebatkan. Saya berpendapat itu terlalu kembung dan kurang terorganisir.
Rob
@robjb - jangan sedikit "membengkak", Anda tidak menggunakan apa yang tidak Anda butuhkan dan tentunya semakin banyak perpustakaan yang tersedia semakin baik, karena untuk yang kurang terorganisir, PEAR dan PECL cukup apik - tidak ada padanan nyata dalam dunia C # dan Java. Perpustakaan tidak "ortogonal" tetapi ini tidak bisa dihindari dengan banyak proyek berkontribusi selama beberapa tahun.
James Anderson
1
Saya tidak menyangkal PHP memiliki beberapa ekstensi / pustaka yang sangat berguna, tetapi saya tidak tahu apa-apa lagi untuk memanggil beberapa ribu fungsi yang diselubungi secara global tetapi "membengkak." Juga, sejumlah fungsi memiliki tujuan yang serupa. Tidak konsisten penamaan lanjut obfuscates perpustakaan inti, misalnya strip_tagsvs stripslashes. Saya berpendapat C tidak menunjukkan masalah ini, namun sudah ada sedikit lebih lama. ;)
Rob
Seluruh "bloatware" - yaitu instalasi, php, instalasi yang dapat digunakan untuk membangun situs web yang bermanfaat masuk sekitar 70MB. Ini lebih kecil dari beberapa file JAR yang datang dengan JE. Sebagian besar pengembang akan menganggap lingkup global fungsi built-in agak berguna, dibandingkan dengan verbositas Java di mana Anda perlu "mengimpor" file jar sebelum Anda dapat melakukan hal-hal esoteris seperti menulis baris ke sysout. PHP jauh dari sempurna tetapi untuk aplikasi web kecil hingga menengah lebih baik daripada yang lainnya.
James Anderson
@robjb - Saya tidak mendapatkan komentar "C", C menunjukkan API yang tidak konsisten, fungsi duplikat dalam sekop. Hanya karena perpustakaannya sulit ditemukan dan Anda hanya pernah menggunakan beberapa berapa banyak perpustakaan "string cerdas" yang ada di sana?
James Anderson