Neden Scala?

Merhabalar! Bu yazımda Scala’nın onu tercih sebebiniz olabilecek birkaç avantajından bahsetmek istiyorum. Merhaba Scala! yazımda ve Kim? sayfamda biraz bahsettiğim gibi Linovi’de çalışıyorum ve Scala’yı öğrenmeye/kullanmaya burada başladım. Scala ile ilgili şirketimin tercihleri ve benim kişisel görüşlerimi göz önünde bulundurarak birkaç başlık halinde anlatacağım.

Java ile Yakın İlişki

Java en yaygın programlama dillerinden bir tanesi. Java ile yapılabilecekler gerçekten oldukça fazla. Çok çeşitli ortamlarda da çalışabiliyor. Haliyle Java ile yazılmış dünya kadar kütüphane, araç ve çözüm var. Ancak eğer siz bir şekilde Java ile geliştirme yapmıyorsanız, geliştirdiğiniz dilden başka bir dilde yazılmış bir kodu kullanmak ya ek çaba gerektirecektir ya da mümkün değildir. Scala ile geliştirme yapacak olursanız böyle bir sorunla karşılaşmazsınız. Scala da tıpkı Java gibi JVM üzerinde çalışır. Scala kodunuzla birlikte Java kodu yazabilir, Scala kodunuzda Java kütüphanelerini doğrudan kullanabilir ve Java’yı çalıştırabildiğiniz bir ortamda Scala’yı da çalıştırabilirsiniz. Gördüğünüz gibi, bir nedenden dolayı Java’yı değil başka bir dili tercih etmek durumundaysanız, Scala’nın Java ile bu yakın ilişkisi sizin için avantajlı olabilir. Şirketimin Scala tercihinde de Java ile olan bu ilişki önemli bir etken. Örneğin yoğun olarak kullandığımız Amazon’un AWS (Amazon Web Services) isimli bulut (cloud) hizmetleri için hazırlanmış arayüzler ve kütüphaneler Java ile yazılmış durumda ve biz Scala kodumuzla birlikte sorunsuzca kullanabiliyoruz.

Yüksek Performanslı, Eşzamanlı İşler

Scala ile Akka teknolojilerini kullanarak eşzamanlı (concurrent), dağıtık (distributed) ve yüksek performanslı sistemler geliştirebilirsiniz. Evet, Akka teknolojilerini Java’da ve başka dillerde de kullanabiliyorsunuz ama bu teknolojileri Scala ile de sorunsuzca kullanabilmek yine bir avantaj. Hatta Scala’nın (fonksiyonel programlama gibi) farklı yetenekleriyle de birleşince bu teknolojileri Scala ile kullanmak daha kolay ve etkili olabiliyor. Linovi’de Akka’nın aktörlerini Scala ile kullanıyoruz.

Fonksiyonel Programlama

Scala birden fazla programlama paradigmasını/modelini destekleyecek şekilde geliştirilmiş. Nesne yönelimli programlama modelini tıpkı Java’daki veya başka bir nesne yönelimli programlama destekleyen dildeki gibi kullanabiliyorsunuz. Hatta bunun üzerine iyileştirmeler de yapılmış. Bunlara ek olarak Scala ile nesne yönelimli programlamadan oldukça farklı olan fonksiyonel programlama modelini de kullanabiliyorsunuz. Scala bu iki temel programlama modellerini başarılı şekilde harmanlamış. Dilin size sunduğu birçok kütüphanede ve arayüzde fonksiyonel programlama özellikleri ve tekniklerinden yararlanılmış. Hatta – daha önce bahsetmiştim – Scala birçok yerde sizi fonksiyonel programlama yapmaya teşvik ediyor. İlerleyen yazılarımda Scala ile daha çok kodlama yaptıkça bunun detaylarına ineceğim.

Kısa ve Öz Sözdizimi

Bu yazıyı okuyorsanız muhtemelen Scala dışında bir dil kullanıyorsunuzdur. Hatta o dilin Java olma ihtimali de oldukça yüksek. 🙂 Java ile geliştirme yapmışsanız bilirsiniz ki bazen basit bir iş için bile çok fazla kod yazarız. Benzer şeyleri tekrar tekrar yazarız ve yaptığımız işler büyüdükçe bu durum biraz can sıkmaya başlar. Scala geliştirilirken, bu gibi can sıkıcı durumlardan kurtulmak için birçok noktada neyin gerçekten gerekli olduğu, neyin ise aslında gereksiz olduğu ve atılabileceği üzerinde düşünülmüş. Örnek olması için; bir İnsan sınıfı tanımlayan, 10 tane rastgele yaşlara sahip insan oluşturan, bunları listeleyen ve sonra yaşlarının toplamını gösteren bir kod yazdım. Aşağıda aynı kodun birbirine denk Java ve Scala ile yazılmış hallerini görebilirsiniz.

Java

Scala

Aradaki farkı görüyorsunuz. 🙂 Kodun Scala halinde ileride detaylıca bahsedeceğim (tür çıkarımı/tahmini [type inference], sadece döngü olmayan for’lar [for comprehension], koleksiyonlar [collections], fonksiyonel programlama [functional programming], parçalı fonksiyonlar [partial functions] gibi) birçok Scala özelliğini kullandım. Her ne kadar örnek olsun diye uydurduğum bir kod olsa da Java’da, da Scala’da da geliştirme yapmış biri olarak farkın gerçekten de bu boyutlara ulaştığını söyleyebilirim. Scala’yı tercih etmemdeki kişisel nedenlerden birisi de bu Scala’nın bu öz (concise) yapısı.

Play Framework ve Web Uygulamaları

Yukarıda Akka’dan bahsederken anlattığım gibi, Scala ile web uygulamaları geliştirmek için Play Framework‘ü kullanabilirsiniz. Yine Akka gibi Play Framework de Java ile çalışabilmesine rağmen Scala ile daha kolay, keyifli ve etkili geliştirmeye olanak sağlıyor. Ayrıca Play Framework geliştiricileri önce Scala, sonra Java için geliştirme yapıyorlar diye biliyorum. Yani Play Framework kullanacaksanız Scala’nın Java’ya göre desteklenme konusunda bir avantajı var. Ayrıca Scala’daki implicit kavramı ve fonksiyonel programlama özellikleri gibi gelişmiş yapılar, web uygulamalarınızı geliştirirken size gerçekten çok yardımcı olabiliyor ve uygulamalarınızı daha etkin biçimde geliştirebiliyorsunuz. Linovi’de yüksek performanslı ve kaliteli web uygulamaları geliştirmeyi hedeflediğimiz için Play Framework’ü tercih ediyoruz. Çünkü Play Framework hafif ve iyi bir performansla çalışıyor. İlerleyen zamanlarda Scala ile Play Framework üzerine yazılar yazacağım.

Sonuç

Bu yazımda Scala ile ilgili “Neden Scala öğreneyim/kullanayım?”, “Neden Scala’ya geçeyim?” gibi sorularınıza cevaplar vermeye çalıştım. İnşallah anlattıklarım faydalı olmuştur.

Tekrar görüşmek üzere, hoşça kalın!

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s