yusufcakal
Scala ile Fonksiyonel Programlama

Updated 5 months ago

Scala'ya Giriş

Scala, 2004 de Martin Odersky tarafından tasarlanan birden fazla programlama paradigmalarını içerisinde barındıran bir hibrit programlama dilidir. Scala, Java sanal makinesi (JVM) üzerinde çalışan, ücretsiz, açık kaynaklı, hız ve ölçeklenebilirlik üzerinde duran, adını da bunun İngilizce karşılığı "scalable"dan alan, nesne yönelimli (object-oriented) ama fonksiyonel programlamayı da destekleyen bir dil.

Komünite olarak hızla büyüyen bir ekibe sahip olan scala en önemli paradigmalarından bazıları fonksiyonel programlama, nesne yönelimli programlama, ve eşzamanlılık gibi kavramlardır. Biz burada fonksiyonel programlama üzerinden duracağız.

Yazım kuralları olarak daha önce java üzerinde çalıştıysanız scala size çok da yabancı gelmeyecektir. Tavsiye edilen yöntemlerden bir diğeri ise daha önce nesne yönelimli programlama paradigmasına hakim olan bir kimsenin fonksiyonel programlama ya da bakması ufkunuzu açacağı yönündedir.

Scala ile yazdığınız kodu hem compile (derleme) hemde interpret (yorumalama) edebiliyorsunuz. REPL (Read-Evulate-Print Loop) dediğimiz yorumlayıcı ile kodunuzu hızlı bir şekilde byte koda çevirip JVM üzerinde execute edebiliyorsunuz, yani bu demek oluyor ki java kütüphanelerinden kolaylıkla birinci yoldan faydalanabiliyorsunuz, bu kolaylık ile kodunuzdan hızlı geri bildirimler alabiliyorsunuz.

Scala , java gibi JVM (Java Sanal Makinesi) üzerinde koşmaktadır. Yani Java da yazılan herhangi bir sınıfı , metodu, kütüphaneyi scala üzerinden çağırabilirsiniz/kullanabilirsiniz. Java da primitif tip bulunurken Scala da böyle bir kavram bulunmamaktadır. Her değişken birer nesne tipinde atanmaktadır. (Type Inference)

Scala da CLI (Komut Satırı Yorumlayıcısı) sayesinde hızlıca sonucunu görmek istediğiniz kod bloklarını test edebilirsiniz. CLI yazmış olduğunuz kodu hızlıca yorumlayarak size sonucunu dönderecektir.

Her programlama dilinde olduğu gibi Scala'ya da "Hello World" ile başlayalım ve üzerinde birkaç yorumda bulunalım.

def main(args: Array[String]): Unit = {
    println("Hello World")
}

Göreceğiniz üzere Java ya göre daha basit ve sade bir yazım kuralı var. Java da yazdığınız satırlarca pojo sınıfları scala da bir satırda yazabiliyorsunuz. Tabi bu sınıfları tasarım desenleri'ne uygun bir şekilde yazıyorsanız size daha sonradan code refactoring (zamanla kodun değişme ihtiyacına uğraması işlemi) açısından kolaylık sağlayacaktır.

Geliştirme ortamı olarak netbeans, eclipse, intellij idea gibi derleyiciler kullanabilirsiniz.