Data Vinci 8 : Javascript

Sunucu taraflı programlamaya tepki olarak doğmuştur. Geçmişi sunucu taraflı programlama ile şekillenmiş yazılımcıları zorlar. Javascript bir futbolcu olsaydı, Barcelona’ya imzayı atacağı çağa gelmişti. Zira 1995 yılından beri aramızda. Fakat Web’in gelişimine ivme kattığı yıllarla birlikte bilinirliği ve yaygınlığı giderek arttı. Bir dönem “Java” ile “Javascript” karıştırılırdı bile. Ya aynı şey, ya da bir java component’i olarak bilindiği günlerden geçti Javascript.

High-level diller arasında gösterilir, bir script dilidir yani derlenmez, tarayıcı tarafından yorumlanır. Hâl böyle olunca tarayıcının ayarlarından javascript devre dışı bırakıldığında yazılan uygulamalar çalışmayacaktır. İstemci taraflı programlamanın bir diğer handikapı ise şeffaflığın maksimum seviyede olması, o yani sizin geliştirdiğiniz bir uygulamaya istek yapan bir istemci tüm çıplaklığı ile kaynak kodunuzu da görebilir. Bununla ilgili üst sınıftan abilerin ortaya attığı bir takım çözümler var tabii ki. Minification performans amaçlı bir teknik olsa da kodun okunabilirliğini azaltmakta, obfuscation ise kodu karıştırmak diyebileceğimiz bir operasyon. Tabii reverse engineering gibi yöntemlerle bu kodların muhteviyatlarına ulaşılabilir ancak caydırıcı önlemler olarak kullanılabilir. Tatava yapmadan konuya devam edeyim.

 Bir diğer handikap ise tarayıcıların varamadığı fikir birliği, her tarayıcı kendine göre bir yorumlayıcı kullandığından ötürü web sayfalarının davranışları da farklılıklar gösterebiliyor. Özellikle internet explorer eski versiyonlarında html ve javascript yazılımcıların başını bir hayli ağrıtmıştı.

Bu yazı boyunca Javascript’i gömeceğimi düşünüyorsanız yanılıyorsunuz. Çünkü  bence “Web Devrimi”nin görünür kahramanı, “Achilles”i Javascript’tir. Bence diyerek de tartışmaların önünü kapatalım. 2000’li yılların ortalarında web sitelerinde animasyon popüler olmuştu. Adobe’un Flash ürünü de bu popülerlikten en çok ekmek yiyen ürün idi. Ancak Flash bir tasarım aracı idi. Statik bir site için konuşursak, evet dibimizi düşüren ( o zamanlar için) aksiyonların havada uçtuğu, ordan oraya motion tween’lerin aktığı sayfalarda gayet yeterli idi. Fakat mevzubahis dinamik site ise, teknoloji teferruat olamıyordu. Bir kere Flash component’leri ile dolu bir sayfanın yüklenme süresi çok fazla idi. Günümüz deyimiyle TT’den düştüğü anda kimse 1dk 22 saniye yüklenme süresi veren bir anasayfanın açılması beklemez idi. Bir diğer yanda ise İnternet’in yaygınlaşması ile birlikte okları sivrilten, CSS,Javascript gibi teknolojiler Adobe’un Flash’ına el hareketleri çekmeye başlamıştı. İlk başlarda ufak tefek script’ler ile sahnelerde boy gösteren Javascript. Masaüstüne kar yağdırma, sağ klik kitleme gibi  rollerden, Single Page Application denilen uber hızlara erişmiş web sayfalarının altyapılarına, web tabanlı multi-player oyunlara,  türlü türlü akıl ermez animasyonların gerçekleşmesine vesile olmaya evrildi.

Onun dışında popülerliğinin artması ile bir sürü de javascript framework’ü ortaya sunuldu. Bunlar içerisinde React,AngularJS, Ember gibi son dönem çılgın atanların yanında bir nesil üstü denebilecek, “siz yokken o vardı ulan” haykırışları yaşatabilecek “Jquery”.

Birçok yazılım teknolojisi gibi javascript’te çeşitli standartlaşma çabalarına şahit oldu. Ecma International önderliğinde 1,2,3 derken EcmaScript 5 versiyonuna kadar geldikten sonra, yine birçok yazılımın yaşadığı versiyonlama bunalımında EcmaScript 2015 ve son olarak EcmaScript2016 standartı yayınlandı.

Javascript’in yaygınlaşması şüphesiz ki İnternet’in icadıyla ve yayılması ile oldu. Yerçekiminin bulunmasıyla olacak hali yok. Mesele tüm gümbürtünün statik olmaması ile ilgili. Zira script dilleri, derlenen bir yapıya sahip değiller. HTML ile statik olarak icra edilen ve web tarayıcından bir istek yapıldığında sunucunun verdiği “static” çıktıya işaret eder. Çıktıyı değiştirmek istediğimizde tüm HTML içeriği sunucudan bizim talebimiz doğrultusunda işletilip tekrar “statik” olarak gelir. Öyle iş mi olur arkadaş diyenler işte Javascriptçiler. İnternet sayfaları ve uygulamaları doğası gereği etkileşimin yüksek olduğu uygulamalar. İçeriğin dinamik olarak üretilmediği düşünüldüğünde stateless yapı da göz önüne alınınca bu statik yapı bizlerin canını sıkar. “Çare asenkron” nidalarıyla sunucuya yapılan bu isteklerin parçalı, diğer deyişle asenkron yapılması elzemdir. Bize bu hareket kabiliyetini sağlayan ise AJAX teknolojisidir. Eşzamanlı Javascript “long live the king”…

Amatör kümeden başlayan kariyer gelişimini 2016 yılındaki stackoverflow developer anketinin de işaret ettiği üzere “Nou-Camp’a” taşımayı başarmıştır.

Web çılgınlığının yanına Mobil çılgınlığı eklendiğinde nur topu gibi yeni terimlerimiz oldu. “Native App”, “Hyrid App”, “Web App” gibi sıfatlar ile hem web, hem de mobil için tasarlanan uygulamalar yeni bir ufuk açmış oldu bizlere. Bu noktadaki dallanma, mobil teknoloji üreticilerinin çeşitliliği ile birlikte yeni kırılımlar oluşturdu. Biz tek bir teknolojiye hakimiyet sağlayalım derken, artık teknolojiye hakimiyet değil de platforma hakimiyet gibi bir bakış açısı serpildi.  Dolayısıyla Jquery Mobile, Cordova, PhoneGap, Ionic gibi API’lar, Plug-in’ler, Framework’ler ortaya çıktı. Gelsin dolarlar, eurolar diyenler için sorun yok, fakat fularsız camiada bu öğrenilecek yeni disiplinler, uykusuz geceler, dökülen saçlar şeklinde vücut buluyor.

Bu noktada Javascript sadece Web Scripting Language olarak anılmaktan da çıkmış oldu. Farklı platformlar için de çözüm sunabilen bir yapıya kavuştu. Önemi artmış oldu.

Sevenin çok sevdiği, sevmeyenin de nefret ettiği bir programlama dili olan Javascript, özellikle web taraflı uygulamaların asenkron çalışma gereksinimlerinin yüksek olmasından ötürü sıklıkla başvurulan, sevilmesi gereken, çetrefilli fakat hayat kurtarabilen bir dildir. Konu hakkında söylenecek çok şey var. Fakat bu yazıların amacı gereği belli bir uzunluğu aşmamasına özen gösteriyorum. O yüzden eksiği ve gediği olsa da yazıyı burda sonlandırıyorum. Değinmediğim, atladığım fakat atlanmaması gereken noktalar varsa geri dönüşlerinizi beklerim.

TL;DR 

Javascript hakkında kişisel fikirlerimi beyan ettiğim bir yazıdır. Teknik detaylardan ziyade tarihsel gelişimine yapmış olduğum yorumları içerir.

Faydalı olması dileğimle.

keep_calm

Leave a Reply

Your email address will not be published. Required fields are marked *