F# ile Fonksiyonel Programlama

January 13, 2020 2 dakika

Bu kitaba başlama hikayem biraz karışık. 2019 yılının başında, .NET topluluğuna giriş niyetim vardı. 6 ay epey uğraştım. Sonrasında Rust ile devam etmeye karar verdim. Hem fonksiyonel paradigmalara hakim olmak açısından, hem de -biraz garip olacak ama- Rust'ı öğrenirken bu kitabın faydasını gördüm. Some - None, pattern matching, value immutability, higher order functions, discriminated unions, hatta generics kullanımı birbirine benzer. Fakat amaç ve hedefleri arasında ciddi bir fark var. Kitapta şöyle bir not vardı:

“F# ile ilgili duyacağınız en negatif şeylerden birisi de bu katkılara atfen Microsoft’un F#‘ı, C# ve VB.NET’e fonksiyonel dil özellikleri kazandırmak için oyuncak olarak kullandığı ile ilgili yapılan yorumlardır. Kitabı bu aşamaya kadar okuduğuna göre bu yorumların haklı olup olmadığı değerlendirmesini ise sana, azimli F# programcısına bırakıyorum.”

F# oyuncak mı bilmiyorum; ama herhangi bir CLI dili ile yazılmış .NET kütüphanelerini kullanabilelim, Null type'ı da tanıyalım, veri tiplerini dönüştürebilelim demek, daha önce .NET ile geliştirme yapmamış birisi için çok da ilgi uyandırıcı bir özellik gibi gelmiyor.

Microsoft’un son yıllarda ürettiklerini başarılı buluyorum, bugün özgür olmasa bile açık kaynak topluluğuna en çok katkıda bulunan firmalardan bir tanesi. Ancak içinde bulunduğum toplulukların Microsoft antipatisinin kırılamamış olması benim için bir dezavantaj. Oysa Rust şuan GNOME masaüstü ortamı, oyun, blockchain, wasm, embedded geliştiricileri tarafından benimsenmiş durumda.

Genel amaçla yazılmış her dilin iyi ve kötü yönleri var. Dilin yoğun kullanıldığı alanları gösteren tablo düşünecek olursak, bu tabloya göre birbirine uzak noktada olan dilleri öğrenmeye çalışıyorum. Bir bölgede Rust varsa, .NET’in olduğu bölgede benim için Python var. Zamanında C# tercih etmiş olsaydım, F# üzerine tecrübe kazanmayı kesinlikle isterdim.