Kelahiran dan Kematian JavaScript (2014)
(destroyallsoftware.com)- Menelusuri sejarah JavaScript dan pemrograman dari 1995 hingga 2035 dalam format SF, komedi, dan kuliah serius
- Cakupannya meluas tidak hanya pada JavaScript tetapi juga sejarah pemrograman secara umum
- Mengambil sudut pandang netral yang tidak memihak pro atau kontra terhadap JavaScript
- Membahas kekurangan bahasa ini secara jujur, namun tetap menilai dampak akhirnya pada industri sangat positif
- Pesan utamanya adalah bahwa meskipun memiliki kekurangan, JavaScript meninggalkan dampak positif yang besar pada industri pemrograman
Ikhtisar kuliah
- Mengikuti sejarah JavaScript dan pemrograman secara umum dari 1995 hingga 2035
- Karakter kuliah ini merupakan campuran SF, komedi, dan kuliah yang sepenuhnya serius
- Ini bukan kuliah yang mendukung atau menentang JavaScript, dan tidak dirangkum dari satu posisi tertentu
- Kekurangan JavaScript dibahas secara jujur, tetapi dampak akhirnya pada industri dinilai sangat positif
1 komentar
Komentar Hacker News
Memang berhasil memprediksi dengan tepat bahwa akan datang bencana global pada 2020~2025, hanya saja jenis bencananya yang salah(?)
Sangat khas JavaScript
Mengejutkan belum ada yang bilang bahwa orang ini meninggalkan mahakarya ini untuk kita
Kalau belum pernah menontonnya, saya sarankan berhenti dulu dari apa pun yang sedang dikerjakan dan tonton. Dijamin ini akan jadi 5 menit terbaik hari ini
https://www.destroyallsoftware.com/talks/wat
Boundaries adalah video paling penuh wawasan tentang arsitektur perangkat lunak yang pernah saya tonton, dan sampai sekarang saya masih mengingat pelajarannya saat merancang aplikasi yang kompleks
Ini juga materi pengantar yang bagus untuk mengajarkan cara berpikir seperti programmer fungsional kepada orang yang terbiasa dengan logika imperatif dengan state yang tersebar di mana-mana
https://www.destroyallsoftware.com/talks/boundaries
Setelah memanggil
Array(16), dia bilang ada 16 pemisah, padahal sebenarnya cuma 15, jadi lelucon Batman-nya agak rusakLalu dia memakai
{}+[]dan menjelaskan itu sebagai menambahkan daftar ke objek, kemudian mengejek bahwa hasilnya berbeda dari[]+{}yang menghasilkan[object Object], padahal kalau ditulis({}+[])hasilnya juga[object Object]Kenapa
{}+[]berbeda biar jadi teka-teki. Petunjuk:Gurer vf ab bowrpg gurer.JavaScript memang pada akhirnya menjadi target kompilasi, waktu video itu dibuat contohnya asm.js, dan sekarang sudah ada WebAssembly
Melihat itu benar-benar diimplementasikan dan berjalan mendekati native, rasanya prediksinya cukup tepat
Saya sendiri kebanyakan memakai TypeScript, dan berkat Electron, teknologi web dikemas menjadi aplikasi desktop sehingga sintaks web juga masuk ke program biasa
Electron memang sering dibilang berat dan kurang bagus, tapi itu juga cara tercepat untuk mendukung Mac, Windows, dan Linux sekaligus
“Kematian” yang dimaksud di sini adalah kondisi saat JavaScript tidak lagi ditulis langsung, tetapi menjadi lapisan dasar yang ada di mana-mana, dan menurut saya memang itu yang terjadi
Kecepatan pengembangannya juga menurut saya cukup tinggi
Hanya saja saya kurang tahu bagaimana performanya dibanding Electron atau aplikasi native
Untuk tim kecil, jauh lebih baik fokus pada benar-benar merilis produknya daripada mengoptimalkan kecepatan
Compiler menurut definisinya memindahkan kode yang bisa dibaca manusia ke bahasa mesin
Kelebihan JavaScript adalah Google mendorongnya sampai batas maksimal lewat V8, lalu NodeJS menciptakan lingkungan backend yang menarik, setelah itu ia menjadi seperti PDF: ada di mana-mana dan sekali ditulis bisa dipakai di mana saja
Alasan ia sejauh ini lebih unggul daripada WebAssembly juga karena fleksibilitas itu; WebAssembly tidak terpasang seluas JavaScript
Zaman sekarang JavaScript pada praktiknya hampir sinonim dengan TypeScript, dan itu lompatan besar. Menurut saya pahlawan tersembunyinya di sini adalah Angular 2
Angular memilih TypeScript sejak awal, sambil tetap menyediakan versi JavaScript native, tetapi jujur saja versi itu nyaris tidak layak dipakai dan dulu banyak dikritik
Menariknya, tempat perlindungan terakhir yang belum menjadikan TypeScript pilihan bawaan adalah React, tetapi dengan proyek besar seperti NextJS yang pada dasarnya bergantung pada TypeScript, ReactJS juga pada akhirnya akan runtuh
Ini bukan pertama kalinya inovasi muncul lebih dulu di proyek lain lalu ReactJS menyusul, dan menurut saya di sini pun Angular memimpin
Kalau memilih JavaScript dan Python, jarang sekali itu menjadi pilihan yang sangat salah
Orang-orang masih menulis JS langsung dalam jumlah sangat besar, dan WebAssembly juga belum menguasai lingkungan eksekusi umum untuk aplikasi web
Kita memang bisa menemukan contoh perusahaan yang membangun sesuatu di atas WebAssembly, tetapi jangan sampai itu disamakan dengan pergeseran besar seperti yang dimaksud Gary
Itu sama sekali tidak terjadi
Tidak perlu menjalankan banyak browser web untuk itu
Setiap beberapa tahun orang menciptakan JavaScript yang lebih baik, lalu mentranspilasinya kembali ke JavaScript
Tidak ada yang secara inheren salah dengan mengompilasi ke JavaScript, dan bahasa tingkat tinggi bisa menerapkan banyak jaminan yang tidak disediakan langsung oleh JavaScript murni
Hampir semua jaminan bahasa yang pernah kita gunakan pada akhirnya bisa dilanggar di assembly mentah
Masalahnya adalah kecepatan perkembangan Wasm tidak secepat yang diprediksi di sini
Karena tidak ada manipulasi DOM, kita tetap harus memakai JS sebagai glue code, atau kalau tidak kita harus meninggalkan HTML dan CSS sepenuhnya dan merender semuanya ke canvas seperti Flutter atau beberapa GUI Rust
Namun sayang sekali kalau harus kehilangan himpunan fitur web
API DOM dirancang dengan asumsi bahwa aksesnya dilakukan lewat JS, dan desain JS beserta beberapa fitur “unik”-nya juga sebagian lahir dari kebutuhan untuk dipakai bersama DOM
Bisa di-debug saat itu juga, bisa dimasukkan ke LLM, dan karena tidak ada wrapper, jauh lebih mudah untuk diutak-atik, dieksperimenkan, dan dikerjakan
Pada 2014, saya melihat Gary Bernhardt membawakan presentasi ini secara langsung di Canadian Undergraduate Software Engineering Conference (CUSEC)
PNaCl baru muncul setahun sebelumnya, dan Google memakainya di Chrome dan ChromeOS untuk melakukan cross-compile, menjalankan, dan sandboxing OpenSSH serta klien RDP, sementara pihak Mozilla/Firefox mengusulkan asm.js sebagai tanggapan terhadap itu
Waktu itu rasanya cuma lucu, tapi sekarang mengejutkan melihat bahwa cukup banyak bagian dari ide itu yang ternyata bertahan
Wat lightning talk dari Gary Bernhardt adalah presentasi favorit saya
Jaraknya hanya 2 tahun lebih awal dari presentasi yang menjadi judul postingan ini
[1]: https://www.destroyallsoftware.com/talks/wat
Hampir semuanya terjadi sesuai naskah
Sekarang tinggal menunggu sistem operasi lain yang sepenuhnya berbasis teknologi browser, atau WASM OS
webOS dan Firefox OS setidaknya 20 tahun terlalu maju dari zamannya
WASM bukan mengonfirmasi tesis itu, melainkan membantahnya
Tesis itu menyatakan bahwa source yang kompatibel dengan JavaScript akan menjadi fondasi masa depan, dan bahwa mesin JavaScript yang sangat dioptimalkan untuk menafsirkan subset kompatibel secara efisien—meski JavaScript biasa adalah fondasi yang buruk—dapat menjadi platform tujuan umum masa depan
WASM secara mendasar menolak ini dengan membuat fondasi baru yang tidak kompatibel dengan JavaScript, yang dirancang untuk menjadi target level rendah
Mengatakan bahwa WASM mengonfirmasi tesis itu sama anehnya dengan mengatakan bahwa masa depan di mana semua orang memiliki interpreter Rust di dalam browser mengonfirmasi tesis tersebut
Jika Anda mengklaim itu, pada akhirnya yang Anda katakan hanyalah bahwa browser web akan menjalankan semacam kode dalam bahasa apa pun, dan itu memang sudah terjadi
Videonya jelas membahas kemungkinan yang “mengejutkan”, jadi tidak masuk akal menganggapnya selaras secara harfiah dengan setiap masa depan yang mungkin dan sepenuhnya biasa-biasa saja
Saya bertanya murni karena penasaran
Dan tangkapan layar webOS yang saya lihat membuat saya berharap ia hidup kembali. Bukan hanya di smart TV, tapi juga di tempat lain
Kita sudah melewati separuh jadwal menuju 2035 versi Bernhardt
JavaScript memang belum mati, tetapi tampaknya jelas sedang menulis pidato dukacitanya sendiri di dalam WebAssembly
Kecuali terjadi perang nuklir global, saya akan bertaruh JS bertahan lebih lama daripada kebanyakan manusia
Seperti PHP, ini tidak akan pernah mati
JavaScript adalah bahasa pemrograman terbaik sepanjang masa