1 puan yazan GN⁺ 6 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 6 시간 전
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

    • Neredeyse NaN% doğruluk denebilir
  • 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

    • Tüm sunumları harika
      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
    • Bu sunumda birkaç hata var; gördüklerimden sadece ikisini yazayım
      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 bozuyor
      Bir 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

    • Flutter da var; yalnızca masaüstü işletim sistemlerini değil, iOS ve Android’i de destekliyor
      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
    • JavaScript bir bakıma yeni assembly katmanı
      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
    • Eğer o “ölüm”, JavaScript’in doğrudan yazılmayan bir temel katman olması anlamına geliyorsa, ben başka bir zaman çizgisinde yaşıyor olmalıyım
      İ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
    • Videodaki anlatıda JIT o kadar iyi hâle gelmiş ki sanal bellek ve bellek korumasını ortadan kaldırmış
      Böyle bir şey hiç olmadı
    • Bir web sitesi yeterliyse neden uygulama yapalım ki?
      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

    • Büyük ölçekli benimsenme her zaman iyi tasarımı yener
    • Sonuçta her şey assembly kodu
      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

    • Flutter’ı seçenler, tüm tarayıcılarda canvas’ın sağladığı tutarlılığın, farklı farklı uygulanmış web özellikleri kümesini elde etmekten daha değerli olduğunu düşünecektir
    • DOM ile JS ayrılmaz bir ikili
      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
    • JS, WASM’a göre çok daha erişilebilir
      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

    • Hiç de değil
      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
    • ChromeOS'tan bahsetmemenin teknik bir nedeni var mı?
      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

    • Ailendeki birkaç nesil öldükten sonra bile son JS komutunun hâlâ çalışıyor olması çok muhtemel
      Küresel bir nükleer savaş çıkmadığı sürece, JS'nin çoğu insandan daha uzun yaşayacağına bahse girerim
    • Her ay birçok müşterinin sitesini inceliyorum ve hepsi bir şekilde JavaScript kullanıyor
      PHP gibi, asla ölmeyecek
  • JavaScript tüm zamanların en iyi programlama dili