TypeScript; Tanışma

typescript

   Geçtiğimiz Ekim ayında resmen tanıştığımız ve 0.8.0 ön izleme sürümü ile aramıza katılan TypeScript, aradan geçen zamanda hızla yoluna devam ederken 5 sürüm çıkardı bile. Peki dün itibari ile 0.8.3 sürümünü indirebildiğiniz TypeScript nedir? Dart, CoffeeScript ve benzerlerinden ya da javascript’ten farkı nedir?

   Öncelikle TypeScript’in ne olduğuyla başlayalım. Microsoft tarafından açık kaynak kodlu olarak geliştirilen TypeScript; en basit ifade ile javascript’in süper setidir. Temeldeki çıkış amacı uygulama bazında javascript geliştirme deneyimini editör desteğini de arkasına alarak geliştirmektir. Javascript’in süper seti olmasına rağmen benzerlerinden farklı olarak tarayıcılar üzerinde çalışması için bilgisayarınıza yeni bir eklenti kurmanıza gerek yok. Aslına bakarsanız javascript çalıştıran herhangi bir tarayıcı TypeScript çıktılarını çalıştırabilir. Bunun nedeni TypeScript ile yazdığınız kodların bir yorumlayıcı/derleyici tarafında yorumlanarak javascript’e dönüştürülmesi. Hal böyle olunca doğal olarak modern tüm tarayıcılar desteklenmekte.

   Peki neden javascript dururken TypeScript kullanalım? Eğer bu soru aklınıza geliyorsa karşılık olarak benim de size bir sorum olacak; Neden assembly dururken C, C++, Java ya da C# ile uygulama geliştiriyorsunuz? Cevabı basit; bu dillerin sunduğu soyutlama sayesinde “nasıl yapacağım?” yerine “ne yapacağım?”a odaklanabiliyor ve daha verimli olabiliyorsunuz… Daha öncede javascript kullanarak geniş çaplı projelerde çalıştıysanız zaten zorluklarını biliyorsunuzdur; ama bilmeyenler için paylaşma doğru olacaktır.Javascript olabildiğine esnek bir dil; ama bu esneklik özellikle büyük projelerde başa bela da olabilir. Esneklik beraberinde analizde/yönetimde zorluğu da getiriyor. Bu sebepledir ki modern dillerde alışa geldiğimiz editor/geliştirme aracı desteği tam olarak javascript için verilemiyor. Yine modern dillerden alışkın olduğumuz nesnel tabanlı programlama yaklaşımında da uzak olması baş ağrıtan bir başka nokta. Eğer projede belirli tasarım desenlerini uygulamıyor, yazılım ekibiniz birbiriyle sıkı şekilde çalışmıyorsa ortaya bir javascript spagettisi sunmanız an meselesi demektir. Editör desteğinin olmaması da ipin ucunu bir kere kaçırdığınızda üstüne bir bardak soğuk su içmekten başka yapılacak bir şey olmadığı anlamına gelmekte.

  Javascript’in bu klasik problemlerine karşın, HTML’in sunduğu platform bağımsızlığıyla mobil, tablet ve masaüstü sistemlere hitap edebilme. Kolay kurulum, düşük konfigürasyon v.b. nedenlerle javascript kullanılan HTML tabanlı uygulamaların sayısının giderek artmakta. Sayının artması demek rekabet demek, daha büyük uygulamalar demek. Dolayısıyla da büyük oyuncularda yavaş yavaş bu alana kaymakta.  Durum böyle olunca daha modern bir script dili, daha iyi bir editör desteği aranılan bir özellik oluyor.

   Web tarayıcıları üzerinde kullanılan script dillerinin geçmişine göz attığımızda javascript yerine yukarıda saydığım özelliklere sahip dillerin kullanılma denelerini görebiliriz ve zaman gösteriyor ki bunların hepsi web’in homojen doğası nedeniyle başarısız denemeler olarak kalmıştır. Bunun en büyük örneklerinden birisi de Microsoft’un desteklediği vbscript’tir.

  Bu gerçekler ışığında Microsoft daha önceki denemelerinden önemli dersler çıkartarak javascript’i farklı bir dil ile değiştirmek yerine modernize etmeyi seçti. Bunun içinde üzerine kendi modern yapısını getiriyor ve bana sorarsanız bu defa başarılı da olacak.

Neden mi; 

   En başta; projenin başında önemli başarı hikayelerine sahip ve .net’in babalarından birisi olan Anders Hejlsberg bulunuyor.  Hejlsberg ve ekibi TypeScript’in mimarisini tasarlarken .Net framework’ü örnek alıyorlar; ki bence de bu örnek web’in doğasına en uygun örnek. her ikisinin benzerliklerini hızlıca inceleyecek olursak;

  • Aynı .net framework gibi bir platform bağımsızlığı ihtiyacı süöz konusu. İstenilen bağımsızlık bu defa işletim sistemi/donanım yerine tarayıcı.
  • TypeScript’te aynı .Net framework gibi bir derleyici tarafından yorumlanarak ara bir dile dönüştürülüyor. Bu ara dil .net framework için CLR iken, TypeScript için javascript.
  • Yine .net framework’te olduğu gibi bu ara dil son kullanıcının makinesi üzerinde yorumlanarak makinelerin anlayabileceği dile dönüştürüyor. Bu yorumlama, dönüşüm işlemi/Jitting .net için framework tarafından yapılırken TypeScript için tarayıcılar tarafından yapılmakta.

   Tüm bunların üzerine editör desteğini de eklerseniz; temiz, yönetilebilir ve güçlü bir mimari ortaya çıkıyor. İşte bu noktada büyük oyuncular artık sahaya inebilir ve aslına bakarsanız bu daha bu haliyle bile Microsoft’un da aralarında bulunduğu önemli firmalar TypeScript’i büyük ürünlerinde kullanmaya başladı bile…

   TypeScript’in başarılı olacağına inanmamın bir başka sebebi de sahip olduğum deneyim. Deneyimlerim gösteriyor ki firmalar sunucu üzerinde çalışan uygulamalarını istemciye taşırken ek bir maliyete katlanmak yerine mevcut geliştirme ekibini kullanmak isteyecektir. Bu uygulamaların pek çoğunun java, .net v.b. ile geliştirildiğini düşünecek olursak böylesine nesnel tabanlı ve güçlü bir editör desteğine sahip dilleri kullanan geliştiriciler mutlaka javascript’ten kaçmak isteyeceklerdir; ki bu noktada TypeScript önemli bir seçenek olarak karşılarına çıkacaktır.

  Sanırım bu kadar bilgi TypeScript ile tanışmanız için yeterli olacaktır. Tahminimce TypeScript’i denemek için sabırsızlanmaya başladınız bile; o zaman ilk adımı atın ve resmi web sitesini ziyaret edin 😉

Fatih Boy

Ankara'da yaşayan Fatih, bir kamu kurumunda danışman olarak çalışmaktadır. ALM süreçleri, kurumsal veri yolu sistemleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# ve Visual Studio teknolojileri konusundan Microsoft tarafından altı yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz. vCard - Twitter - Facebook - Google+

6 yorum

  1. Haka   •  

    teşekkürler bu güzel paylaşım icin 🙂

  2. Gökhan Akgöl   •  

    Hocam Merhaba,

    Anlatım çok güzel olmuş, typescript i inceledim oldukça güzel’e benziyor zaten c# ile projeler geliştirenler için ayrıca bir güzellik ama şu an tam olarak ne durumda yapılacak büyük, genişletilebilir bir uygulamada kullanılabilir durumda mı? yeni olmasından dolayı sorun yaşatabilir mi diye çekincelerimde yok değil siz ne dersiniz bu konuda sizce hemen kullanıma geçebilirmiyiz.Ayrıca vs 2012 şart mı kullanmak için

    Teşekkürler

  3. mahmut gundogdu   •  

    “Derlenebilen javascript” olması güzel lakin JQuery varken hocam gerçekten gerekli mi? yani ne bileyim kolaylık sağlıyor yazimi rahat visual studio intelli sence desteği veriyor. Ben nereyi kaçırdım JQuery varken neden typescript?

    • Fatih Boy   •     Yazar

      Merhaba Mahmut,
      JQuery’ye saydığın desteklerin verilmesi tabi ki güzel; fakat javascript dünyası sadece JQuery’den ibaret değil. Özellikle de büyük çaplı projelerde çalışıyorsak… TypeScript ile javascript kodumuza daha fazla hakim olabilmek, analiz ve otomatik tamamlama gibi yeteneklere sahip olmak her zaman için bir kazanımdır.

  4. Murat Mustafaoğlu   •  

    detaylı açıklama için teşekkürler en yakın zamanda denemeyi düşünüyorum.. TypeScript ile ilgili örneklerinizi bekliyoruz

  5. Gökhan Gümüş   •  

    Eninde sonunda programlama dilleri arasında tek bir dil kalacak. Buda Javascript türevi bir dil olacak.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir