1 poin oleh GN⁺ 6 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 6 jam lalu
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

    • Bisa dibilang akurasinya hampir NaN%
  • 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

    • Semua presentasinya luar biasa
      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
    • Ada beberapa kesalahan dalam presentasi ini, dan saya tulis dua yang saya lihat
      Setelah memanggil Array(16), dia bilang ada 16 pemisah, padahal sebenarnya cuma 15, jadi lelucon Batman-nya agak rusak
      Lalu 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

    • Ada juga Flutter, dan itu mendukung bukan cuma OS desktop tetapi juga iOS dan Android
      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
    • JavaScript, bisa dibilang, adalah lapisan assembly yang baru
      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
    • Kalau “kematian” itu berarti JavaScript menjadi lapisan dasar yang tidak lagi ditulis langsung, maka itu terdengar seperti garis waktu yang berbeda dari yang saya tinggali
      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
    • Dalam narasi video itu, JIT menjadi cukup bagus sampai memori virtual dan proteksi memori dihapuskan
      Itu sama sekali tidak terjadi
    • Kalau website saja sudah cukup, kenapa harus bikin aplikasi?
      Tidak perlu menjalankan banyak browser web untuk itu
  • Setiap beberapa tahun orang menciptakan JavaScript yang lebih baik, lalu mentranspilasinya kembali ke JavaScript

    • Adopsi skala besar selalu mengalahkan desain yang baik
    • Pada akhirnya semuanya cuma kode assembly
      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

    • Orang yang memilih Flutter kemungkinan akan menganggap konsistensi yang diberikan canvas di semua browser lebih berharga daripada mendapatkan himpunan fitur web yang implementasinya berbeda-beda
    • DOM dan JS tidak bisa dipisahkan
      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
    • JS jauh lebih mudah diakses daripada WASM
      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

    • Sama sekali tidak
      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
    • Adakah alasan teknis mengapa Anda tidak menyebut ChromeOS?
      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

    • Bahkan setelah beberapa generasi keluarga Anda meninggal, kemungkinan besar instruksi JS terakhir masih akan tetap berjalan
      Kecuali terjadi perang nuklir global, saya akan bertaruh JS bertahan lebih lama daripada kebanyakan manusia
    • Setiap bulan saya meninjau situs dari banyak klien, dan semuanya memakai JavaScript dalam satu bentuk atau lainnya
      Seperti PHP, ini tidak akan pernah mati
  • JavaScript adalah bahasa pemrograman terbaik sepanjang masa