Perbandingan antara PHP vs Node.js, Lebih Baik Belajar yang mana?

Dalam beberapa kesempatan saya sering ditanya tentang hal ini. Manakah yang lebih baik dipelajari antara PHP dengan Node.js? Apakah Node.js akan segera menggantikan PHP? Benarkah PHP akan mati dalam waktu dekat?

Untuk menjawab pertanyaan seperti ini, kita akan bandingkan beberapa aspek antara PHP dengan Node.js. Artikel ini lebih ditujukan untuk programmer pemula yang bingung mau belajar dan belum pernah membuat kode program dengan PHP maupun Node.js. Oleh karena itu bahasannya saya batasi agar tidak akan terlalu teknis supaya mudah dipahami.

Sebagai catatan, saya lebih berpengalaman dengan PHP daripada Node.js. Untuk Node.js juga baru sekedar “perkenalan”. Silahkan koreksi jika ada penyampaian yang salah, terutama yang berkaitan dengan bahasan Node.js.


Pengertian PHP dan Node.js

Mana yang lebih baik PHP atau Nodejs

PHP dan Node.js sering dibandingkan karena sama-sama berperan di sisi server (back-end). Dalam pemrograman web, istilah back-end merujuk ke pemrosesan yang dijalankan di sisi web server. Sebagai contoh, untuk menjalankan PHP kita harus menggunakan aplikasi web server seperti apache yang menjadi satu paket dari XAMPP.

Apakah sebuah web harus menggunakan back-end? Tidak juga. Untuk web sederhana, HTML dan CSS saja sudah cukup. Teknologi back-end seperti PHP dan Node.js baru diperlukan jika web tersebut butuh memproses form atau mengakses database.

PHP dan Node.js sebenarnya berbeda dalam hal konsep dasar. PHP adalah sebuah bahasa pemrograman back-end murni, sedangkan Node.js adalah sebuah platform.

Maksudnya, tidak ada namanya bahasa pemrograman Node.js, yang ada adalah Node.js itu menggunakan bahasa pemrograman JavaScript yang dibawa ke sisi back end. Dengan kata lain, agar bisa menggunakan Node.js kita harus paham JavaScript terlebih dahulu.

JavaScript sendiri pada awalnya merupakan bahasa pemrograman web yang berjalan di front-end. Disini JavaScript dipakai untuk memprogram HTML dan CSS di dalam web browser. Hal tersebut berlangsung puluhan tahun sejak 1995. JavaScript pertama kali dirancang oleh Brendan Eich saat bekerja sebagai programmer di Netscape Communications Corporation. PHP sendiri juga hadir di tahun yang sama (1995).

Pada saat itu konsep dasarnya cukup simple. HTML, CSS dan JavaScript dipakai di sisi front-end, sedangkan PHP dipakai di sisi back-end. PHP sendiri bisa diganti dengan bahasa pemrograman lain seperti ASP.

Hal ini berubah ketika JavaScript di bawa ke sisi server oleh Ryan Dahl di tahun 2009, dan lahirlah Node.js. Dengan demikian, JavaScript bisa dipakai di sisi front-end maupun back-end, sehingga komunikasi antar keduanya menjadi lebih efisien.


Kenapa Node.js dianggap lebih baik?

Node.js dianggap sebagai revolusioner. JavaScript yang dulunya hanya dipakai untuk membuat efek-efek animasi di dalam web browser (berjalan di sisi front-end), sekarang juga bisa dipakai untuk memproses form dan berkomunikasi dengan database (berjalan di sisi back-end).

Salah satu fitur utama yang sering dibandingkan dengan PHP adalah, Node.js menggunakan konsep non-blocking I/O model. Konsep ini membuat pemrosesan di Node.js lebih efisien karena tidak terkunci ketika sebuah proses sedang berjalan.

Katakanlah kita ingin memproses 2 tugas dalam waktu yang hampir bersamaan: 1. Ambil data dari database dan 2. menghapus sebuah file di server.

Di dalam PHP, kedua tugas ini dikerjakan dengan sistem antrian. Proses hapus file baru berjalan setelah data selesai diambil dari database.

Sedangkan di Node.js, keduanya bisa berjalan bersamaan tanpa harus menunggu proses yang satu selesai terlebih dahulu. Pertama, Node.js akan memberi instruksi untuk mengambil data dari database. Tanpa menunggu data tersebut sampai, ia akan lanjut ke proses kedua untuk menghapus file. Hasilnya, bisa jadi file dihapus duluan sebelum data dari database sampai.

Namun di sisi lain, Node.js juga menggunakan konsep single threaded. Maksudnya, hanya ada 1 proses yang berjalan sepanjang waktu. Ini berbeda dengan PHP yang menggunakan konsep multi threaded.

Katakanlah pada waktu yang bersamaan ada 1000 orang mengunjungi web kita. Di dalam PHP, akan dibuat 1000 thread dimana setiap pengunjung dilayani oleh 1 thread khusus. Setiap thread akan diproses dengan sistem antrian seperti sebelumnya. Berikut ilustrasi dari konsep ini:

Pemrosesan multi thread di PHP

Pemrosesan multi thread di PHP. Sumber: quora.com

Dalam gambar diatas, ada 4 orang pengunjung yang dilayani oleh 4 thread. Masing-masing 1 untuk setiap pengunjung.

Sedangkan di Node.js, 1000 pengunjung itu akan di layani oleh 1 thread saja. Thread secara bergantian berpindah dari satu proses ke proses lain tanpa harus menunggu proses yang satu selesai (kopsep non-blocking I/O model). Berikut ilustrasinya:

Pemrosesan single thread di Node.js

Pemrosesan single thread di Node.js. Sumber: quora.com

Dalam gambar diatas, ada 4 orang pengunjung yang dilayani oleh 1 thread yang berpindah secara bergantian. Tapi kembali, berbeda dengan thread di PHP, di dalam Node.js thread tersebut tidak harus menunggu setiap proses selesai, tapi cukup memberikan instruksi dan thread akan ‘loncat’ ke tugas berikutnya. Istilahnya asynchronous requests.

Jadi, mana yang lebih baik? Banyak faktor yang mesti dipertimbangkan. Secara umum, untuk tugas-tugas sederhana, konsep 1 thread, non-blocking I/O model kepunyaan Node.js akan memberikan performa yang lebih baik. Ditambah lagi efisiensi dari konsep single thread ini. Sedangkan untuk web yang butuh pemrosesan besar, konsep multi thread kepunyaan PHP akan lebih baik.

Meskipun begitu, masih banyak faktor-faktor lain yang bisa mempengaruhi seperti optimisasi server, update teknologi, perancangan kode program, dll. Sebagai contoh, PHP 7 menawarkan peningkatan performa yang jauh lebih besar dibandingkan dengan PHP 5.

Jadi menurut saya, dari segi performa PHP tidak otomatis kalah dari Node.js. Hanya saja, memang ada aplikasi-aplikasi yang lebih cocok menggunakan Node.js daripada PHP, terutama website yang terus-menerus realtime dan butuh banyak JavaScript.

Sebagai contoh, aplikasi Google seperti Gmail, Google Docs, Google Analytics itu full JavaScript, sehingga paling pas dipadukan dengan Node.js di server.

Ditambah lagi ada jargon “JavaScript: One programming language to rule them all”. Maksudnya JavaScript saat ini bisa dipakai untuk memprogram apa saja, mulai dari aplikasi desktop, mobile app, web server, hingga Internet of things. Hal ini Semakin menambah alasan untuk belajar Node.js yang berbasis JavaScript.

Jadi, Apakah Lebih baik belajar Node.js daripada PHP?

Dari penjelasan diatas, terlihat bahwa Node.js tampak lebih menarik daripada PHP. Ini pula yang menimbulkan anggapan bahwa sebaiknya kita belajar Node.js yang lebih modern daripada PHP yang sudah mulai tua. Betulkah? Kita akan lihat dari sisi lain.


Pangsa Pasar Penggunaan PHP vs Node.js

Tidak dapat dipungkiri bahwa teknologi JavaScript (termasuk di Node.js), berkembang dengan sangat pesat, terutama dalam beberapa tahun belakangan. Namun untuk pangsa pasar penggunaan teknologi back-end, PHP masih jauh lebih kuat.

Berikut beberapa data yang saya dapat tentang perbandingan penggunaan PHP dengan Node.js:

Diagram pangsa pasar bahasa pemrograman web server

Diagram pangsa pasar bahasa pemrograman web server. Sumber: w3techs.com

Terlihat bahwa 80% website yang ada di dunia masih menggunakan PHP di sisi server, ini sangat dominan. Diantaranya, sekitar 30% menggunakan CMS WordPress, yang juga berbasis PHP.

Dari 20% sisa web yang tidak menggunakan PHP, itupun terdiri dari berbagai teknologi back-end lain seperti ASP, Java, Ruby, ColdFusion dan JavaScript. Jika kita menganggap JavaScript ini adalah Node.js, maka hanya 0,4% saja website yang menggunakan Node.js. Ini berdasarkan hasil riset dari w3techs.com.

Salah satu alasannya adalah karena Node.js merupakan teknologi baru, jadi jika dibandingkan dengan keseluruhan website yang sudah ada sejak puluhan tahun yang lalu, angkanya menjadi sangat kecil.

Jadi agak mustahil jika menyebut PHP akan mati dalam waktu dekat. Saya yakin dalam 5 tahun ke depan PHP masih tetap ada. Dan tentu saja PHP akan terus berinovasi agar lebih baik dan lebih efisien lagi.

Migrasi sebuah website yang sudah ada dari PHP ke Node.js akan butuh tenaga dan biaya yang cukup besar, sehingga mayoritas website jarang yang mau beralih dari PHP kecuali ada hal yang sangat urgent.


Dasar Keahlian untuk belajar PHP vs Node.js

Bagi saya, inilah alasan terbesar untuk tidak langsung belajar Node.js. Alur belajar (learning curve) Node.js lumayan sulit. Bagi pemula jauh lebih mudah belajar PHP dibandingkan Node.js. Bahkan boleh dibilang mustahil pemula bisa langsung ke Node.js.

Syarat untuk bisa ke PHP hanya perlu paham HTML (disarankan juga punya dasar CSS meskipun tidak wajib). Dua materi dasar ini (HTML dan CSS) sudah cukup untuk bisa belajar PHP sebagai bahasa pemrograman web.

Sebagai contoh, untuk menampilkan teks “Hello World” di web browser, kode PHPnya adalah sebagai berikut:

<?php
  echo 'Hello World!';
?>

Sangat sederhana. Satu paragraf saja sudah cukup untuk membahas kode diatas, dimana sebuah kode PHP dibuka dengan tag <?php dan diakhiri dengan tag ?>. Perintah echo dipakai untuk menampilkan teks ke dalam web browser.

Bagaimana dengan Node,js? Setelah punya dasar HTML dan CSS, harus belajar lagi JavaScript karena Node.js berbasis kepada bahasa pemrograman JavaScript.

Untuk menampilkan teks “Hello World” di Node.js, berikut perintahnya:

var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World!');
}).listen(3000, '127.0.0.1');

Selain lebih panjang, kode-kode diatas butuh pemahaman yang mendalam tentang JavaScript dan pengetahuan seputar cara kerja web server.

Bagi pemula, saya rasa perlu 1 halaman bahkan lebih untuk membahas semua kode ini, mulai dari konsep variabel, object, function, callback, http header, http respond, http port, dan alamat IP Server. Inilah yang saya maksud bahwa Node.js lebih susah dipelajari, khususnya untuk pemula.


Hosting untuk PHP vs Node.js

Selain kode program yang lebih sulit, meng-onlinekan sebuah web yang dibuat dengan Node.js juga perlu skill yang mumpuni. Setidaknya kita mesti nyaman men-setting VPS (Virtual Private Server) yang biasanya harus menggunakan command line Linux (perintah terminal) via SSH. Yakni mengeketik perintah secara manual baris per baris.

Sedangkan untuk PHP, web hosting yang dipakai untuk meng-onlinekan website ada dimana-mana dan harganya relatif murah (pakai shared hosting). Selain itu konfigurasi web server juga sangat mudah karena semua tinggal pakai sistem cPanel yang berbasis grafis. Kita cuma perlu beberapa kali klik dan website sudah online. Tidak perlu hapal perintah-perintah linux. Kecuali jika webnya sudah ramai dan butuh server sekelas VPS.

Disisi ini menurut saya PHP juga lebih user friendly untuk pemula dibandingkan Node.js. Atau setidaknya sampai ada hosting yang menyediakan cara mudah menjalankan web yang dibuat dengan Node.js


Materi Belajar PHP vs Node.js

Karena relatif baru, materi belajar untuk Node.js tentu saja belum sebanyak PHP, terutama referensi / web berbahasa Indonesia.

Khusus bagi pelajar atau mahasiswa, menurut saya masih cukup jarang guru / dosen yang update dan paham tentang Node.js. Jika bicara tentang bahasa pemrograman web, mereka mungkin hanya tahu PHP. Ini bisa menjadi salah satu bahan pertimbangan sebelum membuat skripsi web menggunakan Node.js


Kesimpulan: Jadi lebih baik belajar PHP atau Node.js?

Dari artikel ini tentu anda bisa menebak bahwa saya cenderung menyarankan untuk belajar PHP terlebih dahulu. Alasan paling kuat karena Node.js lumayan susah dipelajari bagi pemula. Banyak yang harus dipersiapkan sebelum bisa ke Node.js.

Saya bukan tidak suka Node.js, tapi hanya mengarahkan jalur yang paling pas. Setelah paham PHP dan JavaScript, silahkan lanjut ke Node.js.

Terkait masa depan keduanya, baik PHP maupun Node.js sama-sama menarik. PHP sudah sangat mapan dan masih menjadi bahasa mayoritas untuk pemrograman server. CMS PHP populer seperti WordPress juga akan ‘menjamin’ bahwa PHP akan terus hadir. Sehingga saya kurang sependapat jika dikatakan bahwa PHP akan segera digantikan oleh Node.js. Jika pun hal itu akan terjadi, mungkin butuh waktu 5 – 10 tahun lagi.

Untuk programmer pemula yang baru mulai belajar pemrograman web server, saran saya sebaiknya ke PHP dulu. Setelah punya basic yang kuat di “5 sekawan”, yakni HTML, CSS, PHP, MySQL dan JavaScript, baru masuk ke teknologi yang relatif baru seperti Node.js, mongoDB, Express JS, Angular JS, dll. Semua teknologi baru ini berbasiskan JavaScript, sehingga punya basic yang kuat di JavaScript adalah suatu keharusan.

Bagi kita sebagai programmer, silih berganti bahasa pemrograman adalah hal yang sangat lumrah dan akan selalu ada. Intinya harus bisa beradaptasi dengan perubahan dengan cara terus update teknologi terbaru, terutama yang sedang populer seperti Node.js.

Bukan tidak mungkin beberapa tahun lagi akan hadir teknologi baru pesaing PHP dan Node.js. Sehingga akan ada isu lagi kalau Node.js juga akan segera punah. Di dunia programming, hal seperti ini sudah sering kali terjadi terutama ketika muncul teknologi baru.

Selain PHP dan Node.js, masih ada bahasa ASP, Phyton, Ruby serta Java yang sama-sama bisa dipakai untuk web server. Jika anda punya waktu, silahkan pelajari beberapa diantara teknologi ini.

Tapi menurut saya, PHP pantas di pelajari terlebih dahulu karena lebih mudah untuk pemula serta penggunaannya masih sangat banyak. Belajar Node.js bisa menyusul sesudah itu, yang tentunya setelah paham JavaScript.

Referensi:

  • https://w3techs.com/technologies/overview/programming_language/all
  • https://www.similartech.com/compare/nodejs-vs-php
  • https://www.quora.com/Why-do-you-think-Node-js-is-better-than-PHP
  • https://crew.co/blog/is-php-still-relevant-in-2017/
  • https://stackoverflow.com/questions/17959663/why-is-node-js-single-threaded

 


*** Artikel Terkait ***

23 Comments

  1. rio
    28 Jan 18
  2. Adnan
    28 Jan 18
    • Andre
      28 Jan 18
  3. Mahmud Al Fauzi
    28 Jan 18
    • Andre
      29 Jan 18
  4. Wahabi Putra
    30 Jan 18
    • Andre
      30 Jan 18
  5. Rizki
    30 Jan 18
    • Andre
      01 Feb 18
      • Zul
        14 Aug 18
        • Andre
          14 Aug 18
  6. Anonymous
    27 Mar 18
  7. Anonymous
    11 Jul 18
    • Andre
      11 Jul 18
  8. rio chandra
    03 Aug 18
    • Andre
      03 Aug 18
  9. Reza
    07 Aug 18
    • Andre
      07 Aug 18
  10. mbetixz
    18 Sep 18
    • Andre
      18 Sep 18
      • mbetixz
        20 Sep 18
        • Andre
          20 Sep 18
  11. Wahyu
    28 Oct 18

Add Comment