elektrik port üyelik servisleri elektrik port üyelik servisleri

F# ile Fonksiyonel Programlama

1955 yılında geliştirilen ve ilk örnek dilleri FORTRAN ve COBOL olan fonksiyonel programlama, nesneye dayalı programlama dilleri (C++, Java, Phyton vb.) kadar popüler olmasa da özellikle matematiksel, fiziksel ve mühendislik alanında birçok işlemi kolay fonksiyonlarla yapılmasını sağlamaktadır. MATLAB programının temelini de oluşturan fonksiyonel programlamanın son gözdesi olan, Microsoft’un geliştirdiği F# Programlamayı ve fonksiyonel programlamayı sizler için inceledik:



A- A+
28.04.2014 tarihli yazı 18185 kez okunmuştur.

Fonksiyonel Programlama Nedir?


Fonksiyonel programlama, fonksiyonların kullanımına dayalı olan, Alonzo Church’ün geliştirdiği Lambda Calculus’ü yani fonksiyon uygulamaları ve tekrarlama fonksiyonlarını temel alan bir programlama paradigmasıdır. Fonksiyonel programlamada genellikle değişken durumların kullanımından kaçınılır ve bu yüzden fonksiyonel programlamada atama bulunmaz ve değişkenlerin değeri bir defa verildikten sonra bir daha değişmez.
 

 


Fonksiyonel dillerin en önemli özelliklerinden biri yazılan programın yaptığı hesaplamalarına matematiksel fonksiyon olarak bakmasıdır. Böylece birden fazla hesaplamayı kısa matematiksel fonksiyonlarla yapmamızı sağlar. Ayrıca saf fonksiyonlar sayesinde hiçbir yan etkiden etkilenmeyerek ve yan etki göstermeyerek fonksiyonun değerinin aynı kalmasını sağlar. Fonksiyonel programlama, imperative dillerin ( C, Java…) aksine, sonuçlara değil kendisini ifade eden hesaplamalara odaklanır.
 



►İlginizi Çekebilir: Hangi Programlama Dilini Seçmeliyim?


Günümüzde kullanılan fonksiyonel programlamanın en büyük örnekleri Haskell, OCaml ve F# dilleridir. Sayısal hesaplama ve programlama dili olan MATLAB’ın da oluşmasına katkı sağlayan fonksiyonel programlama, matematiksel, fiziksel ve mühendislik hesaplamarı ve çalışmalarında yoğun olarak kullanılır.

Basit matematiksel modellerden yararlanılarak çözülebilen uygulamalar daha az kod ile, uygulamalarımızı geliştirecek olduğumuz uygulamalarda yalnızca gerekli olan bileşenlerin kullanılması ve minimum düzeyde bellek kullanımı gibi özellikler fonksiyonel programlamanın temel özelliklerindendir. Günümüzde fonksiyonel programlamayı kullanabileceğimiz dillerden biri F#‘dır. F#‘da fonksiyonel programlar yardımı ile karmaşık uygulamaları daha pratik geliştirebiliriz.


 

F# Nedir?


F#, ilk olarak 2005’te duyurulan ve 25 Aralık 2013’te kararlı sürümü kullanılmaya başlanan bir fonksiyonel programlama dilidir. ML, Ocaml, C#,  Phyton, Haskell, Scala, Erlang gibi dilleri temel alarak oluşturulan F#, Avustrulayalı bilgisayar bilimcisi Don Syme öncülüğünde Microsoft Research ofislerinde geliştirildi. Şu an Microsoft ve gönüllü katkıda bulunanların oluşturduğu F# Software Foundation tarafından geliştirilmeye devam eden F# Programlama, Microsoft’un uygulama geliştirme platformu .Net Framework üzerinde çalışmaktadır.
 

 
►İlginizi Çekebilir:  Portlar ve Programlama Dilleri

 
Diğer popüler fonksiyonel programlama dillerinden başta ML olmak üzere Haskell Ocaml ve Lisp  dillerinin içeriği, kullanım yapıları ve gereklilikleri F# dilinin içerisine çalışmasına zarar vermeyecek şekilde eklenmiştir. Ayrıca F# .NET dilinin gücünü de diğer dillerle birlikte bünyesine katmıştır. F#, karmaşık fonksiyonların çözüm yöntemlerine getirdiği yaklaşımların çabukluğu açısından fonksiyonel programlamaya benzemesi ile birlikte günümüzün en iyi mimarisi olarak kabul edilen nesne tabanlı programlama tekniğini de problem çözümlerinde kullanabilmesi iyi kabul edilebilecek yaklaşımlarıdır. F# oluşurken yararlandığı ilk yapı .NET yapısı olmuştur. .NET‘in temel sınıf kütüphanelerini kullanan F#, Base Class Library (BCL)’yi kullanmıştır. Ayrıca .NET bünyesinde bulunup da temel olarak kullanılan dillerde C# ve Visual Basic’dir.


 

 


F#‘ın nesnesel modelleri oluşturulurken ise OCaml’i nesnesel programlama mimarisine aykırı olmayacak biçimde kullanılmaya çalışılmıştır. Derleme işlemleri için kullanılan mimaride Common Language Infrastructure (CLI)‘dır. Not defteri vb. programlarda yazılabilen F# dili, Microsoft’un uygulama geliştirme platformu Visual Studio’da da kullanılabilir, projeler üretilebilir. Ayrıca Microsoft Research tarafından kullanıcıların hizmetine açılan “Try F#” sitesi ile de hem F# dilini öğrenebilir, hem de örnek uygulamalar geliştirebilirsiniz.

 

F# Uygulama Örnekleri

 Giriş olarak “Hello World” yazmayı unutmuyoruz tabi ki: 


// Yorum Satırı
printfn "Hello World!"

  Bir Fibonacci örneği:


/// Fibonacci Formülü
let rec fib n =
    match n with
    | 0 | 1 -> n
    | _ -> fib (n - 1) + fib (n - 2)
 
let fibSeq = Seq.unfold (fun (a,b) -> Some(a+b, (b, a+b))) (0,1)
 
[1 .. 10]
|> List.map     fib
|> List.filter  (fun n -> (n % 2) = 0)
|> printList
 
 [ for i in 1..10 do
    let r = fib i
    if r % 2 = 0 then yield r ]
|> printList

► Bir Windows uygulama örneği: 

// Windows Form kütüphanesini açıyoruz:
open System.Windows.Forms
 
// Windows uygulama penceresi ve özelliklerini giriyoruz
let form = new Form(Visible=true, TopMost=true, Text="Welcome to F#")
 
// Programın içine yazdıklarımızı göstermek için etiket oluşturuyoruz
let label =
    let x = 3 + (4 * 5)
    new Label(Text = sprintf "x = %d" x)
 
// Programa etiketini veriyoruz 
form.Controls.Add(label)
 
// Son olarak yazdığımız programımızı çalıştırıyoruz
[<System.STAThread>]
Application.Run(form)

► Çeşitli sayısal tipler arası dönüşüm örneği : 

let FunctionSample1() = let twice x = x + x 
printfn "twice 2 = %d" (twice 2)
printfn "twice 4 = %d" (twice 4)
printfn "twice (twice 2) = %d" (twice (twice 2))

Kodun  Çıktısı :  

twice 2 = 4
twice 4 = 8
twice (twice 2) = 8

► Başka bir fonksiyondan fonksiyon çağırma: 

let FunctionSample2() =
let even n = (n%2 = 0) 
let tick x = printfn "tick %d" x 
let tock x = printfn "tock %d" x 
let choose f g h x = if f x then g x else h x 
let ticktock = choose even tick tock  
   
Kodun Çıktısı :

tick 0
tock 1
tick 2
tock 3
tick 4
tock 5
tick 6
tock 7
tick 8
tock 9
tick 10

Yukarıdaki basit örneklerde gördüldüğü gibi kısa fonksiyon belirlemeler, tekrarlamalar ve çağırmalarla özellikle matematiksel işlemler daha pratik bir şekilde yapılabilir.      

 

 
►İlginizi Çekebilir: Bursa'da Yazılım Vadisi Kuruluyor
 

F#’ı Kimler Kullanmalı?


Finansal hesaplamalar ve işlemler, matematiksel işlemler ve matematik fonksiyonlar ile yapılacak işlemler, F# ile daha iyi performans alınarak yapılabilir. Ayrıca oldukça büyük verilerle veya Matlab’de olduğu gibi matrisler ile matematiksel işlemleri yapmak istiyorsak yine F# ile çalışmamız daha faydalı olacaktır. Çünkü fonksiyonel programlama dilinin mimari yapısından ötürü F# ile yapacağımız karmaşık işlemlerin çözüm süresi oldukça kısalacaktır. Ayrıca .NET 4.0 gelişimlerinde matematik fonksiyonlarının daha ayrıntılı bir biçimde çözümlenebilmesi içinde Linear Algebra sınıflarının geliştirildiği bilinmektedir. Bu gelişimler esnasında yararlanılan yöntem yine fonksiyonel programlama teknikleridir.
 

 

F# Eğitim Platformları


F# programlama ile ilgili daha fazla içerik, kaynak kod ve eğitim materyalleri için aşağıdaki sitelere göz gezdirebilirsiniz:

F# Software Foundation  
Codeplex 
Microsoft MSDN  
Try F#  
 


Kaynak:

  İTÜ BİDB,
Techopedia
Haskell.org
Microsoft MSDN
F# Software Foundation
Osman Öztürk Osman Öztürk Yazar Hakkında Tüm yazıları Mesaj gönder Yazdır



Aktif etkinlik bulunmamaktadır.
ANKET
Endüstri 4.0 için En Hazır Sektör Hangisidir

Sonuçlar