Node.js vs. PHP: Pertempuran epik untuk berbagi pikiran pengembang

Ini adalah plot klasik Hollywood: pertarungan antara dua teman lama yang berpisah. Seringkali perselisihan dimulai ketika salah satu teman memicu minat pada apa yang selalu menjadi domain tak terucapkan teman lainnya. Dalam versi bahasa pemrograman film ini, pengenalan Node.js yang mengubah film sobat menjadi pertandingan dendam: PHP dan JavaScript, dua mitra yang dulunya menguasai internet bersama-sama tetapi sekarang berjuang untuk berbagi pikiran pengembang.

Di masa lalu, kemitraan itu sederhana. JavaScript menangani detail kecil di browser, sementara PHP mengelola semua tugas sisi server antara port 80 dan MySQL. Itu adalah persatuan yang bahagia yang terus mendukung banyak bagian penting dari internet. Antara WordPress, Drupal, dan Facebook, orang tidak dapat menghabiskan satu menit pun di web tanpa menggunakan PHP.

Kemudian beberapa anak pintar menemukan dia bisa menjalankan JavaScript di server. Tiba-tiba, PHP tidak perlu digunakan untuk membangun tumpukan server generasi berikutnya. Hanya satu bahasa yang diperlukan untuk membangun Node.js dan kerangka kerja yang berjalan pada klien. "JavaScript di mana-mana" menjadi mantra bagi sebagian orang.

Sejak penemuan itu, JavaScript telah meledak. Pengembang Node.js sekarang dapat memilih antara koleksi kerangka kerja dan perancah luar biasa yang terus berkembang: React, Vue, Express, Angular, Meteor, dan banyak lagi. Daftarnya panjang dan masalah terbesar adalah memilih di antara opsi-opsi yang sangat baik.

Beberapa orang melihat ledakan di Node.js sebagai bukti bahwa JavaScript benar-benar menang, dan ada banyak data mentah untuk mendukung pandangan tersebut. GitHub melaporkan bahwa JavaScript adalah bahasa paling populer dalam koleksi repositori, dan sepupu ciuman JavaScript, TypeScript, juga berkembang pesat. Banyak proyek paling keren ditulis dalam JavaScript dan banyak tagar paling populer merujuk padanya. PHP, sementara itu, telah merosot dari tempat ketiga ke peringkat keempat dalam peringkat ini dan mungkin lebih merosot dalam hitungan siaran pers, peluncuran produk, dan momen-momen lain yang banyak dipasarkan.

Tetapi sensasi memudar dan perangkat lunak dapat hidup selama beberapa dekade. Sebagian besar basis kode PHP tidak akan bermigrasi dan terus menyajikan sebagian besar teks yang kita baca setiap hari. Menurut perkiraan, 40 persen halaman yang kami lihat dimulai, dalam beberapa bentuk, dengan PHP. Sebagian dari ini karena PHP terus dilahirkan kembali. Dalam beberapa tahun terakhir, inti dari sistem yang menjalankan PHP telah ditulis ulang sepenuhnya. Ini bukan kode PHP yang sama yang menjalankan situs web kakek Anda.

Kompiler PHP yang lincah dan tepat waktu memberikan jawaban lebih cepat dari sebelumnya berkat teknik cerdas yang sama yang mendukung revolusi Node.js. Sekarang PHP 7.2 dan HHVM menawarkan banyak pengoptimalan cerdas saat itu juga yang dibawa V8 ke Chrome dan Node.js. Tidak hanya itu, HHVM juga memiliki Hack, dialek PHP pintar yang menawarkan dukungan penuh untuk fitur pemrograman canggih seperti lambda, generik, dan koleksi. Jadi, jika Anda membutuhkan fitur-fitur ini, Anda tidak perlu mencari tumpukan fitur yang lebih lengkap.

Tentu saja, akhirnya belum ditulis. Untuk setiap pembuat kode yang membicarakan tentang kemurnian dan kemudaan Node.js dan kesederhanaan JavaScript di mana-mana, ada orang lain yang senang dengan basis kode yang dalam dan stabilitas PHP yang telah lama dipahami. Akankah pembuat kode lama mengalahkan sisi server pemula? Akankah JavaScript menggulingkan teman lamanya untuk mencapai dominasi dunia? Masukkan popcorn lagi ke dalam microwave dan duduk kembali.

Dimana PHP menang: Mencampur kode dengan konten

Anda sedang mengetik, menuangkan pemikiran ke dalam teks untuk situs web Anda, dan Anda ingin menambahkan cabang ke prosesnya, sedikit pernyataan jika-maka agar terlihat cantik, katakanlah, bergantung pada beberapa parameter di URL. Atau mungkin Anda ingin menggabungkan teks atau data dari database. Dengan PHP, Anda membuka tag PHP ajaib dan mulai menulis kode dalam beberapa detik. Tidak perlu template — semuanya adalah template! Tidak perlu file ekstra atau arsitektur yang rumit, hanya kekuatan logistik yang dapat diprogram di ujung jari Anda.

Di mana Node menang: Memisahkan kekhawatiran

Mencampur kode dengan konten adalah tongkat penopang yang pada akhirnya dapat melumpuhkan Anda. Tentu, menyenangkan untuk menggabungkan kode dengan HTML dua atau tiga kali pertama Anda melakukannya. Tapi segera basis kode Anda menjadi kekacauan logika yang kusut. Pemrogram nyata menambahkan struktur dan memisahkan lapisan kosmetik dari lapisan logis. Lebih bersih bagi programmer baru untuk memahami dan lebih mudah dipelihara. Kerangka kerja yang berjalan di Node.js dibuat oleh pemrogram yang tahu bahwa hidup akan lebih baik jika model, tampilan, dan pengontrol terpisah.

Dimana PHP menang: Basis kode dalam

Web diisi dengan kode PHP. Platform paling populer untuk membangun situs web (WordPress, Drupal, Joomla) ditulis dalam PHP. Tidak hanya platformnya open source, tetapi juga sebagian besar pluginnya. Ada kode PHP di mana-mana, dan menunggu Anda untuk mengunduh, memodifikasi, dan menggunakan untuk kebutuhan Anda.

Di mana Node menang: Fitur yang lebih modern

Tentu, ada ribuan file PHP open source yang bagus, tetapi beberapa di antaranya adalah plugin WordPress berusia 12 tahun yang berharap dan berdoa agar seseorang mau mendownloadnya. Untuk setiap versi modern Symfony, ada pustaka berdebu yang telah lama terlupakan yang tidak diperbarui oleh siapa pun.

Siapa yang ingin menghabiskan waktu berjam-jam, berhari-hari, atau berminggu-minggu dengan kode yang belum diperbarui selama bertahun-tahun? Plug-in Node.js tidak hanya lebih baru, tetapi juga dibuat dengan pengetahuan penuh tentang pendekatan arsitektur terbaru. Mereka dibangun oleh pemrogram yang memahami bahwa aplikasi web modern harus mendorong sebagian besar kecerdasan kepada klien.

Dan sementara JavaScript memiliki banyak keistimewaan kecil yang membuat beberapa orang gila, sebagian besar itu adalah bahasa modern yang menggunakan sintaksis modern dan beberapa fitur berguna seperti closure. Anda dapat mengkonfigurasi ulang dan memperluasnya dengan mudah, membuat pustaka yang kuat seperti jQuery menjadi mungkin. Anda dapat meneruskan fungsi seperti objek. Mengapa membatasi diri Anda sendiri?

Di mana PHP menang: Kesederhanaan (semacam)

PHP tidak banyak: beberapa variabel dan fungsi dasar untuk menyulap string dan angka. Ini adalah lapisan tipis yang tidak melakukan banyak hal kecuali memindahkan data dari port 80 ke database dan sebaliknya. Itulah yang seharusnya dilakukannya. Basis data modern adalah alat ajaib, dan masuk akal untuk menyerahkan tugas berat padanya. PHP adalah jumlah kompleksitas yang tepat untuk pekerjaan yang seharusnya tidak rumit.

Kemudian lagi, jika Anda seorang programmer yang ingin melakukan lebih dari sekadar berinteraksi dengan database dan memformat hasil, sekarang Anda dapat melakukan lebih banyak hal dengan PHP tanpa menutup mulut. HHVM Facebook menambahkan dukungan untuk Hack, bahasa lengkap yang diisi dengan fitur-fitur modern seperti anotasi tipe, generik, dan ekspresi lambda. Menggunakan ini membatasi kode Anda untuk berjalan hanya di HHVM, tetapi itu bukan hal terburuk di dunia. Sangat cepat.

Di mana Node menang: Lusinan opsi bahasa

Jika pengguna PHP senang mendapatkan akses ke Hack, mereka harus mempertimbangkan untuk pindah ke dunia Node.js karena banyak bahasa utama dapat dikompilasi silang untuk dijalankan di JavaScript. Ada beberapa opsi terkenal seperti Java, C #, atau Lisp dan banyak lagi lainnya seperti Scala, OCaml, dan Haskell. Bahkan ada hadiah untuk pecinta BASIC atau Pascal yang sudah nostalgia. Daftar bahasa yang mengkompilasi ke JavaScript dari Jeremy Ashkenas ini cukup lengkap. Ditambah sepupu JavaScript seperti TypeScript dan CoffeeScript menawarkan pendekatan yang sedikit berbeda dan lebih baik untuk game yang sama.

Dimana PHP menang: Tidak diperlukan aplikasi klien

Semua pembicaraan tentang penggunaan bahasa yang sama di browser dan di server itu bagus, tetapi bagaimana jika Anda tidak perlu menggunakan bahasa apa pun di browser? Bagaimana jika Anda mengirimkan data dalam bentuk HTML? Bagaimana jika Anda membangun situs web statis dan sederhana untuk memberikan secara ketat apa yang dibutuhkan tanpa bling interaktif? Peramban memunculkannya, dan tidak ada sakit kepala atau gangguan yang disebabkan oleh utas JavaScript yang gagal berfungsi yang mencoba membuat laman di peramban dari dua lusin panggilan layanan web. HTML murni bekerja lebih sering daripada yang lainnya, dan PHP dioptimalkan untuk membuatnya. Mengapa repot-repot dengan JavaScript di browser? Bangun semua yang ada di server dan hindari membebani browser kecil itu secara berlebihan di ponsel kecil.

Di mana Node menang: Panggilan layanan lebih tipis daripada panggilan PHP berlemak HTML

Meskipun aplikasi web HTML5 yang gila AJAX dapat memiliki terlalu banyak bagian yang bergerak, mereka keren — dan sangat efisien. Setelah kode JavaScript ada di cache browser, satu-satunya hal yang bergerak di sepanjang kabel adalah data baru. Tidak ada banyak markup HTML, dan tidak ada perjalanan berulang untuk mengunduh seluruh halaman. Hanya datanya yang berubah. Jika Anda bersedia meluangkan waktu untuk membuat aplikasi web sisi browser yang apik, ada imbalan besar. Node.js dioptimalkan untuk mengirimkan data dan hanya data melalui layanan web. Jika aplikasi Anda kompleks dan kaya data, itu adalah dasar yang baik untuk pengiriman yang efisien.

Dimana PHP menang: SQL

PHP dibangun agar bisa berdampingan dengan MySQL dan banyak variannya, seperti MariaDB. Jika MySQL tidak tepat, ada database SQL hebat lainnya dari Oracle dan Microsoft. Kode Anda dapat beralih dengan beberapa perubahan pada kueri Anda. Dunia SQL yang luas tidak berakhir di perbatasannya. Beberapa kode yang paling stabil dan dikembangkan dengan baik akan terhubung dengan database SQL, yang berarti semua kekuatan itu juga dapat dengan mudah diintegrasikan ke dalam proyek PHP. Mungkin bukan satu keluarga yang sempurna dan bahagia, tapi itu keluarga yang besar. Tidak hanya itu, dunia database perlahan-lahan menjadi lebih baik karena developer menemukan cara untuk menambahkan lebih banyak kecerdasan ke database sehingga Anda tidak perlu bekerja keras.

Dimana Node.js menang: JSON

Jika Anda harus memiliki akses ke SQL, Node.js memiliki perpustakaan untuk melakukannya. Namun Node.js juga menggunakan JSON, bahasa pergaulan untuk berinteraksi dengan banyak database NoSQL terbaru. Itu tidak berarti Anda tidak bisa mendapatkan pustaka JSON untuk tumpukan PHP Anda, tetapi ada sesuatu yang berubah-ubah tentang kesederhanaan bekerja dengan JSON saat menggunakan JavaScript. Ini salah satu sintaks dari browser ke server web ke database. Titik dua dan tanda kurung kurawal bekerja dengan cara yang sama di semua tempat. Itu saja akan menyelamatkan Anda dari berjam-jam frustrasi.

Dimana PHP menang: Kecepatan pengkodean

Bagi sebagian besar pengembang, menulis PHP untuk aplikasi web terasa lebih cepat: tidak ada kompiler, tidak ada penerapan, tidak ada file JAR atau praprosesor — cukup editor favorit Anda dan beberapa file PHP dalam sebuah direktori. Jarak tempuh Anda akan bervariasi, tetapi ketika harus menyelesaikan proyek dengan cepat, PHP adalah alat yang baik untuk digunakan.

Dimana Node.js menang: Kecepatan aplikasi

Menulis kode JavaScript sedikit lebih sulit saat Anda menghitung tanda kurung dan tanda kurung kurawal, tetapi setelah selesai, kode Node.js Anda bisa terbang. Mekanisme callback sangat bagus karena menyelamatkan Anda dari masalah juggling thread. Inti dibangun dengan baik dan dirancang untuk melakukan semua itu untuk Anda. Bukankah itu yang diinginkan semua orang?

Dimana PHP menang: Kompetisi

Pertarungan untuk mendapatkan hati dan pikiran para pengembang PHP masih berlangsung. Tim HHVM dan tim Zend bekerja keras untuk mengirimkan kode cepat untuk semua orang. Tolok ukur independen muncul, dan semua orang mendorong basis kode hingga batasnya. Ini hanya berarti kinerja yang lebih baik.

Dimana Node.js menang: Solidaritas

Apakah Anda benar-benar menginginkan dua basis kode yang berbeda? Tentu, persaingan membantu, tetapi fragmentasi segera menyusul. Apa yang terjadi jika kode Anda hanya berjalan di salah satu dari keduanya? Persaingan tidak ada gunanya jika Anda harus menghabiskan waktu berminggu-minggu atau berbulan-bulan untuk menulis ulang kode Anda. Sementara Node.js mengalami perpecahannya sendiri beberapa tahun yang lalu, dengan peluncuran io.js, alam semesta Node.js telah bersatu kembali, memberikan jenis solidaritas bahasa yang mungkin akan segera dirindukan oleh pengembang PHP.

Dimana PHP menang: Aplikasi dasar

Dalam beberapa tahun terakhir, beberapa pengembang telah memulai aplikasi web dan merasa frustrasi dengan perilaku lamban. JavaScript yang menggerakkan semua bagian yang bergerak itu bisa puluhan ribu byte, terkadang ratusan ribu. Ketika semua paket tiba, mereka harus diurai, dikompilasi, dan akhirnya dijalankan — semua untuk mengirimkan beberapa byte seperti suhu dan perkiraan.

Serangan balik terhadap kegilaan Maroko ini dapat ditemukan dalam tim yang membuat generator situs statis (463 pada tulisan ini) dan laman web yang dilucuti dalam format AMP. PHP adalah pilihan alami untuk tim mana pun yang ingin memusatkan kecerdasan pada server sehingga klien tidak terbebani.

Dimana Node.js menang: Kekayaan

Ludwig Mies van der Rohe, arsitek bangunan, pernah berkata, "Lebih sedikit lebih baik." Robert Venturi, arsitek lain, datang dan membalas, "Less is a bore." Ponsel cerdas memiliki kekuatan lebih dari ruangan yang penuh dengan komputer Cray. Desktop memiliki kartu video dengan banyak kipas untuk menjaganya tetap dingin selama semua pemrosesan. Mengapa kita harus menanggalkan kode kita dan hidup seperti korban era Depresi dalam novel Steinbeck? Jalani itu. Situs web besar dan apik yang penuh dengan kode JavaScript menarik perhatian, dramatis, dan yang terpenting menyenangkan. Memang agak cabul untuk membuang banyak bandwidth pada beberapa bit data, tetapi bandwidth tidak pernah semurah ini. Hidup sedikit!

Dimana keduanya menang: Tanpa kepala

Kata "headless" mengacu pada kode PHP yang berjalan di server. Baru-baru ini beberapa aplikasi PHP teratas seperti Drupal telah mengintip ke seberang dan kagum dengan antarmuka pengguna canggih yang dibangun oleh kerangka kerja JavaScript seperti React, Angular, atau Vue. Alih-alih mencoba bersaing dengan mereka, mereka menyerahkan kendali klien dan berkonsentrasi untuk melakukan pekerjaan yang baik dengan back-end di server.

Jika Anda memiliki cukup banyak investasi dalam kode PHP yang berjalan di server, ini mungkin cara untuk menikmati yang terbaik dari kedua pendekatan tersebut. Kode PHP lama dan mapan bertindak sebagai pintu depan ke database, memeriksa ulang permintaan, membersihkan data, dan secara umum menyediakan semua logika bisnis. Sisi klien adalah aplikasi web progresif yang ditulis dengan kerangka kerja JavaScript terbaru. Ketika membutuhkan informasi, ia mengirimkan permintaan AJAX ke kode PHP.

Ini mungkin tidak masuk akal bagi seseorang yang memulai dari awal, tetapi jika Anda telah mengandalkan PHP selama bertahun-tahun dan Anda ingin bergerak maju secara bertahap, ini bisa menjadi kompromi yang menyenangkan.

Dimana keduanya menang: Layanan mikro dan tanpa server

Layanan mikro yang meningkat atau paradigma tanpa server menawarkan cara untuk JavaScript dan kode PHP untuk hidup bersama server dan bergaul. Kedua solusi membagi pekerjaan menjadi lusinan layanan atau fungsi yang lebih kecil dan ini dapat berjalan secara independen dan tetap berada di jalurnya. Beberapa bagian, biasanya bagian aplikasi yang lebih lama dan paling stabil, dapat menjalankan PHP. Bagian lainnya, seringkali yang lebih baru, akan ditulis di Node.js. Bahasa POSTatau GETbisa menjadi lingua franca yang menyatukan mereka semua.