JavaScript'in Doğuşu ve Ölümü (2014)
(destroyallsoftware.com)- 1995'ten 2035'e kadar JavaScript ve programlama tarihini bilim kurgu, komedi ve ciddi bir konuşma formatında izliyor
- Kapsam yalnızca JavaScript ile sınırlı kalmayıp genel programlama tarihine de genişliyor
- JavaScript hakkında lehte ya da aleyhte tek bir tarafa yaslanmayan tarafsız bir bakış açısı benimsiyor
- Dilin kusurlarını dürüstçe ele alırken, sektör üzerindeki nihai etkisini oldukça olumlu değerlendiriyor
- Temel mesaj, kusurlarına rağmen JavaScript'in yazılım/programlama sektörü üzerinde büyük ve olumlu bir etki bıraktığı
Konuşma özeti
- JavaScript ve genel programlama tarihini 1995'ten 2035'e kadar takip eden bir anlatım
- Konuşmanın tonu bilim kurgu, komedi ve tamamen ciddi bir sunumun karışımından oluşuyor
- JavaScript'i savunan ya da karşı çıkan bir konuşma değil; tek taraflı bir pozisyona indirgenmiyor
- JavaScript'in kusurları dürüstçe ele alınıyor, ancak sektör üzerindeki nihai etkisi çok olumlu değerlendiriliyor
1 yorum
Hacker News yorumları
2020~2025 arasında küresel bir felaketin geleceğini isabetle tahmin etmiş ama sadece felaketin türünü yanlış tutturmuş olması güzel(?)
Tam JavaScript’e yakışır
Bu başyapıtı bize onun bıraktığından hâlâ kimsenin bahsetmemiş olması şaşırtıcı
İzlemediyseniz ne yapıyorsanız bırakıp izlemenizi öneririm. Bugünün en iyi 5 dakikası olacağı garanti
https://www.destroyallsoftware.com/talks/wat
Boundaries, yazılım mimarisi hakkında izlediğim videolar arasında en çok içgörü sağlayanlardan biriydi; karmaşık uygulamalar tasarlarken hâlâ derslerini hatırlarım
Ayrıca durumu oraya buraya dağılmış emperatif mantığa alışkın insanlara fonksiyonel programcı gibi düşünmeyi öğreten iyi bir giriş kaynağı
https://www.destroyallsoftware.com/talks/boundaries
Array(16)çağrısından sonra 16 ayraç olduğunu söylüyor ama aslında sadece 15 tane var, bu da Batman şakasını biraz bozuyorBir de
{}+[]kullanıp bir nesneye liste eklendiğini anlattıktan sonra[]+{}ifadesinin[object Object]vermesiyle sonucun farklı olmasına laf ediyor; ama aslında({}+[])yazarsanız o da[object Object]veriyor{}+[]neden farklı, bunu bulmacaya bırakalım. İpucu:Gurer vf ab bowrpg gurer.JavaScript gerçekten de bir derleme hedefi hâline geldi; videoda asm.js vardı ama şimdi WebAssembly çıktı
Gerçekten uygulanmış ve native’e yakın çalışıyor olması, öngörünün epey doğru olduğunu gösteriyor
Ben çoğunlukla TypeScript kullanıyorum ve Electron sayesinde web teknolojileri masaüstü uygulamaları olarak paketlendiğinden web söz dizimi genel programların içine de girdi
Electron’ın ağır ve pek iyi olmadığı söylenir ama Mac, Windows ve Linux’u aynı anda desteklemenin en hızlı yollarından biri de bu
Buradaki “ölüm”, JavaScript’i doğrudan yazmıyor olsak da her yere yayılmış bir temel katman hâline gelmesi demekse, bence gerçekten öyle oldu
Geliştirme hızının da oldukça iyi olduğunu düşünüyorum
Yalnız performansının Electron ya da native uygulamalarla nasıl kıyaslandığını pek bilmiyorum
Küçük bir ekip için hız optimizasyonundan ziyade gerçekten ürünü yayımlamak çok daha iyidir
Derleyiciler tanım gereği insanların okuyabildiği kodu makine diline çevirir
JavaScript’in avantajı, Google’ın V8 ile işi sınırlarına kadar zorlamış ve NodeJS’in backend’de cazip bir ortam yaratmış olmasının ardından, PDF gibi her yerde bulunması ve bir kez yazıldığında her yerde kullanılabilmesi
WebAssembly’ye karşı bugüne kadarki üstünlüğü de bu çok yönlülük; WebAssembly, JavaScript kadar yaygın kurulu değil
Bugünlerde JavaScript fiilen TypeScript ile eşanlamlı hâle geldi; bu da muazzam bir sıçramaydı. Buradaki gizli kahramanın Angular 2 olduğunu düşünüyorum
Angular en baştan TypeScript’i seçti; native JavaScript sürümü de sundu ama dürüst olmak gerekirse o sürüm neredeyse kullanılamayacak kadar kötüydü ve o dönemde sert biçimde eleştirildi
İlginç şekilde varsayılan seçenek olarak TypeScript’i öne çıkarmayan son sığınak React; ancak NextJS gibi büyük projeler zaten varsayılan olarak TypeScript’e dayandığı için ReactJS de sonunda çökecek
Yeniliğin başka projelerde başlayıp ReactJS’in sonradan takip etmesi ilk kez olmuyor; burada da Angular’ın önde olduğunu düşünüyorum
JavaScript ve Python’ı seçerseniz nadiren çok yanlış yapmış olursunuz
İnsanlar hâlâ muazzam miktarda JS’yi doğrudan yazıyor ve WebAssembly de henüz web uygulamaları için genel yürütme ortamını ele geçirmiş değil
WebAssembly üzerinde bir şeyler inşa eden şirket örnekleri bulunabilir ama bunu Gary’nin sözünü ettiği türden bir büyük dönüşümle karıştırmamak gerekir
Böyle bir şey hiç olmadı
Bunun için birden fazla web tarayıcısı çalıştırmaya gerek yok
Birkaç yılda bir daha iyi bir JavaScript icat ediyoruz, sonra da onu tekrar JavaScript’e transpile ediyoruz
JavaScript’e derlemenin özünde yanlış bir tarafı yok; üst düzey diller, saf JavaScript’in doğrudan sağlamadığı pek çok güvenceyi uygulayabilir
Bugüne kadar kullandığınız neredeyse tüm dil güvenceleri ham assembly’de bozulabilir
Buradaki sorun, Wasm’ın gelişim hızının burada öngörüldüğü kadar hızlı olmaması
DOM manipülasyonu olmadığı için hâlâ yapıştırıcı kod olarak JS kullanmanız gerekiyor; ya da HTML ve CSS’yi tamamen bırakıp Flutter ya da bazı Rust GUI’lerinde olduğu gibi her şeyi canvas’a render etmeniz lazım
Ama web’in sunduğu yetenekler kümesini kaybetmek üzücü olur
DOM API, JS üzerinden erişileceği varsayımıyla tasarlandı ve JS’in tasarımıyla bazı “kendine has” özellikleri de kısmen DOM ile birlikte kullanılmak üzere oluşturuldu
Anında debug edebilirsiniz, bir LLM’e verebilirsiniz ve arada wrapper’lar da olmadığından kurcalamak, denemek ve üzerinde çalışmak çok daha kolaydır
2014'te Canadian Undergraduate Software Engineering Conference (CUSEC)'te Gary Bernhardt'ın bu sunumu canlı yaptığını izlemiştim
PNaCl bir önceki yıl çıkmıştı ve Google bunu Chrome ile ChromeOS içinde OpenSSH ve RDP istemcilerini çapraz derleyip çalıştırmak ve sandbox içine almak için kullanıyordu; Mozilla/Firefox tarafı da buna karşılık olarak asm.js'yi önermişti
O zamanlar sadece komik gelmişti ama şimdi dönüp bakınca bu fikirlerin epey büyük bir kısmının hayatta kalmış olması şaşırtıcı
Gary Bernhardt'ın Wat lightning talk'u en sevdiğim sunumlardan biriydi
Bu yazının başlığındaki sunumdan yalnızca 2 yıl önceydi
[1]: https://www.destroyallsoftware.com/talks/wat
Neredeyse her şey senaryodaki gibi gerçekleşti
Şimdi tek yapmamız gereken, tamamen tarayıcı teknolojisine dayanan başka bir işletim sistemi ya da WASM OS beklemek
webOS ve Firefox OS en azından zamanlarının 20 yıl ilerisindeydi
WASM bu tezi doğrulamıyor, çürütüyor
O tez, JavaScript uyumlu kaynağın geleceğin temeli olacağını; sıradan JavaScript berbat bir temel olsa bile, uyumlu alt kümeleri verimli biçimde yorumlamak üzere aşırı optimize edilmiş JavaScript motorlarının geleceğin genel amaçlı platformu olabileceğini savunuyordu
WASM, düşük seviyeli bir hedef olacak şekilde tasarlanmış ve JavaScript ile uyumlu olmayan yeni bir temel oluşturarak bunu kökten reddediyor
WASM'in bu tezi doğruladığını söylemek, herkesin tarayıcısında bir Rust yorumlayıcısı bulunan bir geleceğin de bu tezi doğruladığını söylemek kadar tuhaf
Bunu böyle savunursanız, sonunda sadece web tarayıcılarının herhangi bir dilde herhangi bir tür kodu çalıştıracağı sonucuna varırsınız; zaten şu anda yaptıkları da bu
Video açıkça “şaşırtıcı” olasılıkları ele alıyor; bunu kelimenin tam anlamıyla sıradan olan her türlü olası gelecekle de uyumlu saymak mantıksız
Tamamen merakımdan soruyorum
Ayrıca gördüğüm webOS ekran görüntüleri, sadece akıllı TV'lerde değil başka yerlerde de geri dönmesini istememe neden olmuştu
Bernhardt'ın 2035 zaman çizelgesinin zaten yarısını geçmiş durumdayız
JavaScript henüz ölmedi ama WebAssembly içinde kendi ağıtını yazıyor gibi görünüyor
Küresel bir nükleer savaş çıkmadığı sürece, JS'nin çoğu insandan daha uzun yaşayacağına bahse girerim
PHP gibi, asla ölmeyecek
JavaScript tüm zamanların en iyi programlama dili