October 31, 2008
@ 11:29 AM
Arkadaşlar merhaba ,
içine girmiş olduğum aşırı yoğun dönem nedeniyle yazı yazmaya vakit bulamıyorum..

haftanın 7 gününde sabah erkenden biryerlere başlayan koşuşturmacam gece geç saatlere kadar devam ediyor..

Elimden geldiğince en kısa sürede birşeyler paylaşmaya kaldığım yerden devam edeceğim..

Sevgiler.


 
Categories: Genel

August 16, 2008
@ 09:58 PM

Daha önceki blog yazımda sıraladığım konu başlıklarıyla F# (efşarp diye okunuyor. )’ın gizemli ve bir o kadarda ilgi çekici yeteneklerine beraber ışık tutuyor olacağız..Daha önce F# ile hiç çalışmamış ya da adını bir yerlerden duymuş olmanıza rağmen hiç incelememiş olabilirsiniz..Fakat şu an bu satırları okuyorsanız bir şekilde yazılımla alakanız ve belli bir bilgi birikiminiz olduğu pek ala ortada.. J Herşeyden önemlisi meraklı olduğunuz ki benim de tam olarak aradığım bu…

Bu arada konuyla ilgili sorularınız olursa ya da ilgili yazılarda açık olmayan ya da anlayamadığınız bir şeyler olursa lütfen yazın..Amacımız daha sonra bu yollardan geçecek olanlara “işe yarar” bilgiler bırakmak..

1.       F# Nedir ?

Eğer benim gibi C veya türevi  kökenli (ciddi bir object pascal takıntımda olmuştur J) bir yazılımcı iseniz ve az çok internette özellikle bilgi paylaşım portallerinde bulunup bir şeyler karalayıp ya da okuyorsanız F# ismini kesinlikle duymuş fakat bir türlü inceleme imkanınız olmamış olabilir.Bir Java programcısı ya da Vb programcısı olmanızdan ziya de F# ı öğrenmek ve ilerlemek için gereken asıl ihtiyaç meraklı olmak ve farklı  düşünmeye açık olmak!

 

“Kemerlerini sıkı bağla DOROTI, az sonra Kansas yerle bir olacak!”

 

Öncelikle F#’ı öğrenmek için C# bilmenize kesinlikle gerek yok..!Şunu belirtmekte fayda var, F# diğer C,C++,Java,C# gibi dillerle bir çok yönden alakası olmayan bir dil..Bunu ilerleyen yazılarda örneklerle çok daha iyi anlayacaksınız..Bana göre F#, pragmatik düşüncenin fonksiyonel alternatifi..

 

                Internet’ de F#’la ilgili sıkça sorulan soruları gözden geçirip bir liste yaptım ve yine bildiğim kadarıyla bunları teker teker cevaplamaya çalıştım. Lütfen merak ettiğiniz bir soru varsa onu bana yazın cevabıyla birlikte bu yazımıza ekleyelim.

-          İsmine bakarak F# , C#’ın türevi dersek doğru mudur?

-          F# dilinin F’i nereden geliyor ?

-          Fonksiyonel programlama ne demek ?

-          Imperative programlama ne demek ?

-          F# nesneye yönelik bir dil midir ?

-          F# Visual Studio üzerinden kullanılabiliyor mu?  Herhangi bir entegrasyon söz konusu mudur ?

-          F# la komut satırı araçları üzerinden çalışmak mümkün müdür ?

-          F# platformlar arası taşılanabilir bir dil midir ?

-          F# ilgili uygulama paketinin dağıtımı için çalışma zamanı kendi özel kütüphanelerine ihtiyaç duyuyor mu ?.NET’in ilgili makinede yüklü olması yeterli mi?

-          F# bir scripting dilimi yoksa derlenebilir bir dil midir?   (En önemli ve sık karşılaştığım sorulardan biri )

-          F# ‘ın hızını diğer dillerle karşılaştırdığımızda tablo nedir ?

-          F#’la ilgili resmi kaynaklar nerededir , nasıl temin edebilirim ?

-         

Liste uzayıp gidiyor..Hemen cevaplara geçelim :

-          1 . İsmine bakılırsa F# , C#’ın türevi dersek doğru mudur?

Kesinlikle alakası yok.!F# programlama dilleri ailesinde köken olarak, ML ya da Meta Language olarak bilinen ve 1970’lere dayanan bir eski bir programlama diline dayanıyor..ML özel tipte çıkarımlar yapabilen bir algoritma üzerine yapılandırılmış dinamik bir yapı üzerinden çalışabilme yeteneğine sahip bir dil.F#’ da bu özelliği aynen korumaktadır.Bu demek değildir ki F#’da tip tanımları yok..Kesinlikle var ki bu o bu dilin % 100 pure olmasını engelleyen durumlardan biri..Zaten yazarken de çok ihtiyaç duymayacaksınız..Ben bu tür işlemlerde hybrid çözümleri daha uygun görüyorum..C#’ın nesneye yönelik programlama konusunda ki esnekliği daha doğrusu esnek ama bir o kadar da sert belirlenmiş esnetilebilir çizgileri ile library’lerimi yazıp F# içerisinde kullanmak daha az maliyetli geliyor..Biraz daha haşır neşir olduğunuzda F#’la beni daha iyi anlayacaksınız..Konuyu fazla dağıtmadan bu kavramlara ilerleyen yazılarda detaylıca yer vereceğimi bilmenizi isterim.

F# , ObjectiveCaml (or OCaml) olarak bilinen ki kendiside Caml  ‘den (Categorical Abstract Machine Language)   türemiş ve aynı zamanda ML’in özelliklerini barındıran ve tüm bunlara bir de imperative dillerin belirgin bir özelliği olan nesneye yönelik programlamayı yetenekleri eklenerek ortaya çıkartılmış bir dil..(her şeyden önemlisi bu son özellik olmasa belki üzerine düşmezdim..) Sonuç itibariyle, yüksek seviyeli ,Ocaml ile müthiş derecede uyumlu (#light direktifinin işlerinden biri bu aslında! (pythonda olduğu gibi girintileme ile kodu anlamdır,söz dizilimini hafifleştirir (ocaml e ait reserved keyword'lerin error verdirmemesi,uyumdan kastımız bu ki iyi bir ocaml coder zorlanmadan F# da yazabilir ,ihtiyacı olan .NET FW'i tanımak ..)..)) ve istenildiğinde koskoca .NET kütüphanesini rahatça kullanabilme yeteneği olan, dil söz dizimi açısından Ocaml( ki normal) ve pascal’la benzerliği olan ,son aldığım bilgiye göre de Visual Studio’nun bir sonraki versiyonunda resmi olarak C#,VB.NET den sonra desteklenecek  3.dil  olma özelliğini taşıyan, (şu anda net değil ama sağlam bir kaynaktan aldığım bilgi..Bariz bir şekilde fonksiyonel programlama aracı olmayışı Visual studio’da bu ihtimali arttırıyor.) Cambridge’de Microsoft Research Center’da Don Syme (ekibi) tarafından geliştirilen ,geliştirilmeye devam edilen sevilesi bir dil.. J

            F# ayrıca, type inference (tür çıkarımı (dinamik)) , high-order functions (x fonksiyonunun başka bir fonksiyon tarafından argüman olarak ele alınması ve sonuç olarak bir fonksiyon döndürebilmesi..(örneğin türev alma)) ,pattern matching,currying ( burada çok sevdiğim scripting dillerinden biri olan javascript’de durumu izah edeyim

(

Yukarıda metodun içeriğinden de anlaşılabileceği gibi basit bir işlem söz konusu..Fonksiyonu çağırma şeklimize dikkat edin..

 


        Özetle , çok parametreli fonksiyonları tek parametreli hale getirme yani örneğimizde iki parametre alan fonksiyon , tek parametreli bir fonksiyon döndüren tek parametreli bir fonksiyona dönüştürülüyor..Humm JPeki curry ismi nerden geliyor dersiniz (tabi ki Haskell Curry .. Haskell bilinen %100 pure ve side effect barındırmayan tek dil..Mesela size imperative bir dilde tüm sayıların küpünü kapsayan bir dizi oluşturun deseydim nasıl yapardınız ?Bir düşünün??Haskell cubes = [n*n *n | n<-[0..]]  diyerek bunu belirtiyorsunuz..üstelik lazy evaulation ile take cubes 3000 diyerek ki (take,let hummm bunları biryerden hatırlıyorsunuz neresi mi hemen söyleyeyim tabiî ki LINQ.. J bunun sebebi lambda functions!Bu fonksiyonel programlama dillerinin özüdür dersek yanılmış olmayız..! işte bu kelimeler aslında C# a Vb’ye  bu dillerden geçiyor..)  sadece ihtiyaç duyulan miktarı isteyebilirsiniz..Bu tek kelimeyle enfes!)

) ) gibi bir çok mükemmel özelliği içerisinde barındırıyor. F# derlenenen bir dil olmasına rağmen fsx dosyaları ile programcıya F# scripting deneyimide yaşatıyor.Bu noktada hybrid bir yapıya sahip..Bu size neyi çağrıştırıyor tabiî ki , python shell ve Ruby’de ki IRB’yi.Hatırlarsanız DLR altında inceleyebileceğiniz bu iki dil ve etkileşim araçları ciddi bir programcı kitlesi tarafından kullanılıyor ve takip ediliyor..script shell’in F# içerisinde yer alıyor olması gerçekten doyurucu..bir editor olmadan kendi function’larınızı hızlıca yazip test edebilirsiniz..

Kaldığımız yerden devam edeceğiz…

not : paragraflar iç içe geçtiğinden dolayı özür diliyorum , bu konuda yeteneksizim :)

Eralp


 
Categories: F#

August 14, 2008
@ 07:19 PM

Merhabalar ;

Emekleme çağını çoktan geride bırakmış Microsoft’da ki ağabeyleri tarafından büyük bir heyecan ile büyütülmüş ve hala büyümeye devam eden köklü ve her şeyden önemlisi düşünme şeklinize farklılık getirecek olan eski (2003..) (yeni) bir dil , F#’la ilgili bilgi ve tecrübelerimi yansıtacağım fsharper.com’da siz değerli yazılım meraklısı insanlarla bir arada olacak olmanın vermiş olduğu mutluluk ve inançla önümüzdeki zaman diliminde sizlere aktarmayı düşündüğüm ve aslında F#’ın S.S.S (FAQ) başucu kaynağı olacak yazılarımda işlemeyi düşündüğüm ilk konular aşağıdaki gibidir :

F Sharp’i keşfedin..

1.F# nedir ?

2.Kurulum / Konfigürasyon

3.Fonksiyonel Programlama

4.Imperative Programlama

5.F# ile Nesneye Yönelik Programlama

6.F# Kütüphaneleri

7.F# ile Kullanıcı arayüzü oluşturma

8.F# ile Veritabanı işlemleri

9.F# ile Web Servislerinin Kullanılması / Oluşturulması ve Dağıtık(Distributed) Programlama

10.F# ile yapılan uygulamanın dağıtıma hazır hale getirilmesi

11.F# ile yazdığımız uygulamanın performans testleri

Şimdilik öngörebildiğim konular bunlar..

Tabi zaman içerisinde özellikle üniversitelerde INETA ve Türkiye’nin çeşitli internet bilişim portalları adına (yazgelistir.com, ceturk.com) hali hazırda vermiş olduğum seminerlerle de tecrübelerimi genç arkadaşlarımla paylaşmaya devam ediyor olacağım..

Beni izlemeye devam edin..

Rock F#, Rock Programming!

Eralp


 
Categories: F#

August 12, 2008
@ 08:45 AM
Merhabalar ;

Bu siteyi yapılandırmamda ki amaç F# la ilgili deneysel çalışma ve bilgilerimi bilişim meraklılarıyla paylaşmak..

İlgili seminerler,paneller ve bilgi paylaşım günleri yer ve zaman konusunda siz değerli okuyucularımı bilgilendirmek.

Kısa bir zaman içinde hazırladığım çalışmaları sizlerle paylaşıyor olacağım..

Vira Bismillah! :)


 
Categories: Genel