Merhaba e-bergi okurları! Bu yazımızda başlıktan da anlayacağınız gibi Scala programlama dilinden bahsedeceğim. Scala 2003 yılında Martin Odersky tarafından geliştirilmiş, hem fonksiyonel hem de nesneye yönelik bir programlama dili. 2015 yılı istatistiklerine göre en çok kullanılan programlama dilleri listesinde kendinden eski birçok dili geçerek(Groovy, Clojure gibi) 28. sıraya kadar yükselmiş. LinkedIn, Twitter gibi şirketlerin de bu dili kullanıyor olduğunu düşünürsek, bu gerçekten büyük bir başarı.

Scala JVM üzerinde geliştirilmiş olduğundan Java ve Scala dilleri birbiriyle oldukça uyumlu. Java kütüphaneleri Scala dilinde kullanılabiliyor ve Scala’nın kendi kütüphaneleri Java kütüphanelerini tamamlar nitelikte. Java ve Scala’nın benzerliklerinden bahsettikten sonra ufak sözdizimi farklarından bahsedelim. Örneğin Scala noktalı virgül gerektirmiyor. Scala, Java’nın birçok kontrol yapılarını kullanmasına rağmen klasik “for” ifadesi Scala’da bulunmuyor. Bunun yerine for benzeri, bir liste ya da array üzerinde indeksleme ihtiyacı duymadan direkt olarak elemanlarını gezebilen yapılara sahip.

Scala dilini biraz da kod üzerinde görmek için artık klasikleşmiş olan “Hello World!” programımızı yazalım:

> scala   
This is a Scala shell.   
Type in expressions to have them evaluated.   
Type :help for more information.    
scala> object HelloWorld {       
     |   def main(){       
     |     println("Hello, world!")       
     |   }       
     | }  
defined module HelloWorld   
scala> HelloWorld.main()  
Hello, world!

Bir örnek daha verelim.

scala> 6 + 7 * 3
res0: Int = 27 //Verdiğimiz işlemi yaptıktan sonra, herhangi bir tip belirtmemize gerek olmadan sonucun
               //integer yani bir sayı olduğunu anlıyor ve "res0" adlı bir değişken yaratarak sonucu res0'a atıyor.
scala> res0 + 7 //İlk işlemde oluşturduğumuz değişkeni bu şekilde kullanabiliyoruz.
res1: Int = 34 //İkinci bir değişken yaratarak yeni değeri res1'e atadı.
scala> "Islemin Sonucu: " + res1 //Bu sefer bir string'i sayı olan res1 ile birleştirmeyi deniyoruz.
res2: String = Islemin Sonucu: 34 //Bu komutla Int tipindeki res1'i String'e dönüştürüp ikisini birleştiriyor.
scala> println(res2)
Islemin Sonucu: 34

Gördüğünüz gibi yaptığımız işlemler için herhangi bir tip belirtmemize gerek kalmadı, Scala değişkenin tipine onun ilk değerine göre kendi karar veriyor.

scala> def intRoot(num: Int) = {  //Bu şekilde fonksiyon tanımlayabiliyoruz.
     | val nums= num*num
     | nums.toInt
     | }
intRoot: (num: Int)Int

scala> intRoot(36)
res3: Int = 1296

scala> intRoot(6)
res4: Int = 36

For ifadesini kullandığımız bir örnek:

scala> val s = for (x<- 1 to 10 if x%2!=0) yield 2*x  // Bu ifadeyle 1'den 10'a kadar tek sayıları 2 
                                                      //ile çarpmasını istiyoruz.
s: scala.collection.immutable.IndexedSeq[Int] = Vector(2, 6, 10, 14, 18) 

scala>

Daha önce de söylediğimiz gibi for döngüsü için herhangi bir indeksleme yapmadan "1 to 10" şeklinde belirterek x değerinin 1'den 10'a kadar olan değerlerde gezmesini sağlayabiliyoruz.

Scala dilinde programlamaya çok kısa bir giriş yapmış olduk. Umarım okumaktan keyif aldığınız bir yazı olmuştur. Bir sonraki yazımızda görüşmek üzere, hoşçakalın!

Kaynakça