Merhabalar değerli e-bergi okurları, bu yazımda sizlere CoffeeScript programlama dilinden biraz bahsedeceğim. Adından da anlayacağınız üzere CoffeeScript bir betik (script) dili. Bu dil 2009 yılında Jeremy Ashkenas tarafından geliştirildi. Jeremy Ashkenas'ın amacı JavaScript'in iyi yanlarını basit bir şekilde ortaya çıkarmaktı. Dil hala geliştirilmeye devam etmekte.

Peki CoffeeScript nasıl çalışıyor? CoffeeScript ile yazdığınız kodu dilin derleyicisi (coffee) aracılığıyla JavaScript'e derliyorsunuz. Sonra bu JavaScript dosyasını da normalde yazacağınız JavaScript'mişçesine kullanıyorsunuz. Ayrıca CoffeeScript koduna JavaScript kütüphanelerini de dahil (import) edebiliyorsunuz.

Gelelim CoffeeScript'in nasıl bir dil olduğuna. CoffeeScript fonksiyonel ve dinamik tipli bir programlama dili. Python ve Ruby gibi, parantezler yerine girintilemeyi (indentation) kullanıyor. Ama beni en şaşırtan özelliği, if, for, switch gibi yapılar dahil neredeyse her şeyin bir ifade (expression) olması, yani bir değer döndürmesi. Birkaç örnekle biraz daha fikir edinmeye çalışalım:

CoffeeScript kodu:

yil = 1989      # Evet yorumlar # ile yapılıyor
isim = "cclub"  # Noktalı virgül koymak zorunda değilsiniz ve var diye bir #reserved word yok

kacSeneGecti (yil) -> 2015 - yil   # Fonksiyonlar böyle yaratılıyor, -> yetiyor yaratmaya                                                                                                     
alert isim # Böyle çağırılıyorlar, parantezsiz

if kacSeneGecti(1989) == 25 then alert "CClub 25 Yaşında!!"    # Üçü
alert "CClub 25 Yaşında" if kacSeneGecti(1989) == 25           # de
if kacSeneGecti(1989) then                                     # geçerli
     alert "CClub 25 Yaşında!!" # <--- Girintiye dikkat

JavaScript kodu:

var sayi = 1989;
var yazi = "cclub";

kacSeneGecti = function(yil) { return 2015 - yil; }

alert("isim");

if(kacSeneGecti(1989)) {
     alert("CClub 25 Yaşında!");
}

Dilin güzel bir özelliği daha var değinmek istediğim, array comprehesion'lar. Python kullanmış olanlar list comprehension olarak bilirler bu özelliği. Olayı şu: Bir listedeki tüm elemanları bir işlemden geçirerek o işlemlerin sonuçlarını yeni bir listeye atıyor. Bir örnekle açıklayacak olursak:

list = [1,2,3,4]
kareler = (sayi * sayi for sayi in list) # kareler'in değeri tahmin edeceğiniz üzere [1,4,9,16]

Eğer bunu JavaScript'le yapmaya çalışıyor olsaydık, şöyle bir şey yazmamız gerekecekti:

var list = [1,2,3,4]
var kareler = [];
for(var i=0;i<list.length;i++) {
    sayi = list[i];
    kareler.push(sayi * sayi);     
}

Yaratılmasından beri geçen 6 yılda, CoffeeScript kendine geniş bir kullanım alanı buldu. JavaScript'ten CoffeeScript'e geçen birçok küçük geliştirici var. Sadece küçük geliştiriciler değil, bazı büyük şirketler de CoffeeScript kullanmaya başladı. Bunlara en iyi örnek, Dropbox'ın 2012'de JavaScript'le yazılmış tüm tarayıcı kodlarını CoffeeScript'le yeniden yazmış olması. Github da JavaScript'ten CoffeeScript'e geçenlerden. Popüler metin düzenleyicisi Atom'u da bu dille yazdılar.

Sizleri CoffeeScript hakkında elimden geldiğince bilgilendirmeye çalıştım. Eğer koda çok boğduysam, affola :) Eğer dil hoşunuza gittiyse ve daha fazla şey öğrenmek istiyorsanız dilin resmi sitesi olan http://coffeescript.org'u ziyaret edin.

Başka bir yazıda görüşmek dileğiyle, hoşçakalın!

Kaynakça: