Apakah Node.js cocok dipelajari oleh pemula? - Om Heker

Friday, September 27, 2019

Apakah Node.js cocok dipelajari oleh pemula?

Baca Juga


Hello sobat om heker kali ini om heker akan menjelaskan  sedikit tentang Apakah Node.js cocok dipelajari oleh pemula? sebelum saya lanjut menjelaskan, bagi kalian yang belum tau pengertian node js bisa di clik disini  penjelasan singkat dari apa itu node.js 

oke kita lanjut, Menurut gw Node.js ngga cocok buat programmer pemula.
Kalo buat pemula, mungkin main - main aja dulu sama python atau ruby, mungkin lebih fun disana. karena:
  • Codenya masih cenderung bisa dibaca dari atas kebawah.
  • Bahasanya ngga beda jauh sama bahasa Inggris.
  • Sangat interactive dengan fitur REPL-nya (Read-Eval-Print-Loop).
    Jadi kamu bisa coba code baris per baris dan lihat effectnya secara langsung tanpa harus dicompile dulu.
  • Typingnya dynamic, jadi ada banyak salah gapapa, masih bisa jalan, walaupun kalau dinilai, programmu mungkin cuman dapet score 10 ~ 20%, tapi paling ngga kamu merasakan ada feedbacknya, kamu ada progress dari 0 ke 10%, ke 20%, ke 25% dst.
    Sementara, di bahasa - bahasa lain yang type-nya static seperti Java, mungkin istilahnya program yang nilainya dibawah 80%, itu ditolak, dan ga bisa jalan sama sekali. Bahasa yang kayak gini cocok buat programmer yang emang udah butuh program yang lebih reliable.
    Tapi kalau dikasih ke pemula, bisa jadi dia terus - terusan melihat nilainya tetap 0, dan justru mendiscourage dia mendalami pemrograman…
    (Javascript sendiri sebenarnya termasuk golongan dynamic, tapi disini yang dibahas kenapa python / ruby cocok buat pemula)
Tingkat kesulitannya Node.js, memang tidak sesusah C atau C++ yang harus disiplin banget buat ngefree memory setelah dipakai secara manual, atau pointer arithmetic yang pain in the ass…
Tapi… async-await, promise, event-loop, callback-hell dkk, mungkin merupakan konsep yang terlalu rumit, yang bisa bikin kamu stuck terus disitu kalau kamu masih baru pertama kali kenal programming.
Menurut gw, Node.js lebih "fun", buat orang yang udah nyemplung cukup dalam ke programming, udah tau basic - basicnya, dan pernah bermain - main dengan function sebagai "first-class citizen".
Selain itu, Node.js (javascript) juga dikenal sebagai bahasa yang punya banyak quirks - quirks yang aneh akibat type-coercionnya, salah satunya yang paling populer adalah:
  1. [][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+[+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]])()
yang kalau dijalankan dibrowser akan menjalankan:
  1. alert(1)
Kenapa bisa gitu? lengkapnya bisa dibaca di: Write any JavaScript with 6 Characters: []()!+
Sekarang balik ke pertanyaan yang pertama, apa kemudahan yang ditawarkan oleh Node.js
Jawabannya justru adalah apa yang mendiscourage programmer pemula tadi:
Asynchronous-function, promise, event-loop. callback, dan model event-driven-programming-nya.
Jadi gini, at some point di karirmu sebagai programmer, kamu mulai peduli, gimana caranya agar programmu lebih responsive, lebih hemat resource, dan lain - lain.
nah, dibahasa - bahasa lain yang masih blocking dan single-threaded itu, analoginya sering kali terjadi masalah seperti ini:
  • Kamu ngasih tugas ke temenmu.
  • Tapi kamu ngga tau temenmu butuh waktu berapa lamu ngerjainnya.
  • Jadi kamu tungguin itu temenmu sampe tugasnya selesai.
  • Setelah tugasnya selesai baru kamu bisa lanjut ngerjain apapun yang mau kamu lakukan.
bisa dibayangkan apa yang terjadi kalo temenmu lama banget ngerjainnya, dan kamu sendiripun punya banyak tugas - tugas lain, berapa lama waktu yang terbuang.
Sementara itu, di Node.js, yang dilakukan adalah:
  • Kamu kasih tugas ke temenmu.
  • Kamu titip pesan lagi ketemenmu, apa yang harus dia lakukan kalo tugasnya udah selesai. (misal: ngasih tau kamu, kalo tugasnya udah selesai, dan sudah bisa diambil).
  • Kamu tinggalin temenmu ngerjain tugasnya itu. dan kamu ngerjain tugasmu yang lain apapun itu.
  • Setelah temenmu selesai ngerjain, dia cuman bakalan ngasih tau kamu (misal kirim SMS). Terus ya udah, dia bisa main PS, tidur, atau ngapain terserah, mati juga gapapa, asal tugasnya ditaro ditempat yang gampang diambil.
  • Mungkin kamu masih ada kerjaan waktu dapet SMS itu, jadi ngga bisa langsung diambil, tapi ngga papa, kamu lanjutin ngerjain tugasmu yang harus dikerjakan berurutan itu, kalo udah abis, baru kamu ambil tugas yang dikerjain temenmu itu.
Jadi disini istilahnya Node.js itu bukan seorang genius yang bisa arithmetic cepet (C++), tapi tujuannya adalah membuat tugas - tugas itu, bisa dikerjakan tanpa blocking.
Ada satu hal lagi yang gw suka dari Node.js.
Yaitu ketika dikombinasikan dengan typescript.
Kalau diatas tadi gw bilang bahwa Javascript termasuk golongan dynamic yang mudah release, tapi kurang pengawasan, seperti ruby dan python.
Nah, typescript ini seperti guru yang mengkoreksi keteledoran - keteledoran kita, karena, kalau ketahuan ada yang tidak benar, belum dikumpulin pun sudah langsung dimarahin.
Tapi dengan itu, justru ketika, bu guru sudah bilang OK, berarti program kita, sudah lolos verifikasi tahap-1…
Masih mungkin ada kesalahan logika, tapi tidak ada kesalahan type seperti menjumlahkan angka dengan huruf, null pointer exception, dsb.
Apabila kamu disiplin mengikuti best-practice dari typescript, kamu pun dapat membantu sang guru, agar dia lebih mudah dalam mengkoreksi programmu.
Comments


EmoticonEmoticon