F#
- Okunuşu
- ef şarp
Kısaca
F#, .NET için fonksiyonel öncelikli, statik tipli bir dildir; tip çıkarımlı özlü kodu, .NET ekosistemine ve C# kütüphanelerine tam erişimle birleştirir.
F# nedir?
F#, Microsoft Research'te Don Syme tarafından tasarlanan ve ilk kez 2005'te yayımlanan, genel amaçlı bir programlama dilidir. ML dil ailesine aittir ve OCaml'dan güçlü biçimde etkilenmiştir. F#, .NET üzerinde çalışır, açık kaynaklıdır ve platformlar arasıdır; Microsoft ile F# Software Foundation topluluğu tarafından birlikte geliştirilir.
F# fonksiyonel önceliklidir; yani varsayılan olarak değerler değiştirilemezdir ve fonksiyonlar ana yapı taşlarıdır, ancak gerektiğinde sınıfları, arayüzleri ve değiştirilebilir durumu da destekler. Tip çıkarımı o kadar güçlüdür ki kodun çoğunda hiç tip açıklaması bulunmaz, yine de her şey derleme zamanında denetlenir. Girinti blokları tanımlar, boru operatörü |> dönüşümleri zincirler, ayırt edici birleşimler (discriminated unions) ve örüntü eşleme ise bir ödemenin kart, banka havalesi ya da nakit olması gibi birkaç biçimden birini alabilen verileri modellemeyi kolaylaştırır.
F#; finansal modellemede, veri analizinde, bilimsel hesaplamada, alan mantığı yoğun arka uç servislerinde ve .fsx dosyalarıyla betik yazmada kullanılır. C# ile aynı ara dile derlendiği için bir F# projesi herhangi bir .NET kütüphanesini kullanabilir ve C# kodundan çağrılabilir. Derleyicinin metreyi saniyeye eklemek gibi hataları yakalamasını sağlayan ölçü birimleri (units of measure) gibi özellikler, doğruluğa verdiği önemi gösterir.
F# en sık, .NET üzerindeki kardeşi C# ile kıyaslanır. C# önce nesne yönelimlidir, fonksiyonel özellikler zamanla eklenmiştir ve çok daha büyük bir topluluğa sahiptir; F# ise önce fonksiyoneldir, daha özlüdür ve değiştirilemezliği ile kapsamlı örüntü eşlemeyi varsayılan yapar. F# ayrıca Haskell ile de kıyaslanır: ikisi de statik tipli fonksiyonel dillerdir, ancak F# ifadeleri hevesle (eager) değerlendirir ve yan etkilere her yerde izin verir; bu da onu daha pragmatik ve mevcut .NET koduyla karıştırmayı daha kolay kılar.
Önemli noktalar
- F#, .NET üzerinde çalışan, fonksiyonel öncelikli ve statik tipli bir dildir.
- Güçlü tip çıkarımı sayesinde kodun çoğu tip açıklaması gerektirmez.
- Ayırt edici birleşimler ve örüntü eşleme, veriyi net ve güvenli biçimde modeller.
- C# ve .NET ekosisteminin geri kalanıyla tam uyumlu çalışır.
- Ölçü birimleri, derleyicinin hesaplamalardaki birim karışıklıklarını yakalamasını sağlar.
Örnek
// A discriminated union: a payment is exactly one of these cases
type Payment =
| Card of number: string
| BankTransfer of iban: string
| Cash
let describe payment =
match payment with
| Card n -> sprintf "Card ending in %s" (n.Substring(n.Length - 4))
| BankTransfer iban -> sprintf "Transfer from %s" iban
| Cash -> "Paid in cash"
[ Card "0000111122223333"; Cash ]
|> List.map describe
|> List.iter (printfn "%s") // Card ending in 3333, then Paid in cashSık sorulan sorular
F# ile C# arasındaki fark nedir?
İkisi de .NET üzerinde çalışır ve aynı kütüphaneleri kullanabilir. C#, C tarzı sözdizimine sahip, önce nesne yönelimli bir dildir; F# ise önce fonksiyoneldir, süslü parantez yerine girinti kullanır ve değiştirilemezliği, tip çıkarımını ve örüntü eşlemeyi varsayılan tarz yapar.
F# hâlâ geliştiriliyor mu?
Evet. F# açık kaynaklıdır, .NET SDK ile birlikte gelir ve her büyük .NET sürümüyle birlikte yeni bir sürüm alır.
F# ve C#'ı aynı çözümde kullanabilir miyim?
Evet. İkisi de aynı .NET ara diline derlendiği için bir F# projesi C# projelerine, C# projeleri de F# projesine başvurabilir; bu da ekiplerin F#'ı alan mantığı ya da veri işleme gibi belirli bölümlerde kullanmasına olanak tanır.
İlgili sayfalar
- C#Programlama Dilleri, s. 4C#, çöp toplamalı .NET çalışma ortamında çalışan, statik tipli, nesne yönelimli bir dildir; web arka uçları, masaüstü uygulamalar ve oyunlar için kullanılır.
- Fonksiyonel programlamaProgramlamanın Temelleri, s. 21Fonksiyonel programlama, paylaşılan verileri değiştirmeyen saf fonksiyonlarla yazılım kurma stilidir; kodu daha öngörülebilir ve test etmesi kolay yapar.
- Tür çıkarımıProgramlamanın Temelleri, s. 53Tür çıkarımı, derleyicinin bir değişkenin ya da ifadenin türünü otomatik olarak belirlediği bir özelliktir; her tür bildirimini yazmanız gerekmez.
- HaskellProgramlama Dilleri, s. 14Haskell, tembel değerlendirme kullanan, saf fonksiyonel ve statik tipli bir dildir; anlatımı güçlü tip sistemi ve matematiksel kesinlikteki koduyla bilinir.
- DeğişmezlikProgramlamanın Temelleri, s. 11Değişmezlik, bir değerin oluşturulduktan sonra değiştirilememesi demektir; her güncelleme, orijinali yerinde değiştirmek yerine yeni bir değer üretir.
- Saf fonksiyonProgramlamanın Temelleri, s. 47Saf fonksiyon, aynı girdi için her zaman aynı çıktıyı döndüren ve yan etkisi olmayan, yani kendi dışındaki hiçbir şeyi değiştirmeyen fonksiyondur.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin