Ana içeriğe geç

F#

Okunuşu
ef şarp
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/fsharp

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

F#'ta ayırt edici birleşimler ve borularfsharp
// 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 cash

Sı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

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar