F# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
F# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Pazartesi, Nisan 12, 2010

Visual Studio 2010 – RTM

Visual Studio 2010 çıktı.

Uzun bir gelişme sürecinin ardından Visual Studio 2010 resmi olarak satışa sunuldu.Visual Studio 2010

IDE üzerinde WPF ‘in nimetlerinden yararlanılarak yapılan değişiklikler, WWF ‘in tasarımın ve akış tiplerinin yenilenmesi, F# dilinin entegre edilmesi, MVC 2 ile beraber gelmesi ve diğer bir çok özelliği ile bugün VS2010 çıkmış bulunuyor. Deneme sürümünü indirip kurmak isteyenler aşağıda verecek olduğum linkten yararlanabilirler. Almak isteyenler için ise Visual Studio 2010 Ultimate satış fiyatı $11850. :)

http://www.microsoft.com/visualstudio/en-us/download

Perşembe, Mayıs 21, 2009

Visual Studio 2010 Beta1 – Kurulum ve Genel Bakış

Gün içerisinde çalışmanın dışında bir de Visual Studio 2010 ‘u kurmakla zaman harcadım. Web installer versionu ile kurduğum VS ‘in kurulum ile ilgili ekran görüntülerini size yazının devamında sunuyor olacağım. Bir çok yenilikle bizlere sunulacak olan VS2010 ilk Beta1 sürümü ile karşımızda. F# ‘tan paralel programlamaya ide güncellemesine kadar nice yeni özelliklerle biz yazılımlacıları mutlu etmeye geliyor.

Kurulum aşaması;

yeni1

yeni2

yeni3

yeni4

yeni5

Yukarıdaki işlemler sonucunda uygumala kurulmuş oluyor. Kurulum sonrası bizi karşılayan ekrandaki değişiklik oldukça köklüdür.

yeni6

yeni7

Zaman içerisinde daha detaylı bilgi vereceğim.

Cumartesi, Mart 29, 2008

F# Nedir?

Bu makalemizde kolay, basit, tipleri fonksiyonel olarak programlayabilen ve yepyeni bir dil olan F#(Fsharp) ‘ı incelemeye çalışacağız.

Yeni çıkmış olan bir dili anlatan makaleler genellikle programlama dilini ve dilin oluşmasını sağlayan etmenlere değinerek giriş yapar. Bizde bu makalemizde bu yolu izleyerek başlayacağız. Temel etmenlere de değinmeden önce daha önemli olan “F# nedir” ‘i ve “Fonksiyonel Programlama nedir” ‘i incelemek daha mantıklı olacaktır.

Fonksiyonel Programlama Nedir?

Fonksiyonel programlama (FP) çok eski zamanlardan, ileri düzey programlama dillerinden beri kullanılan bir yapıydı. FP ‘yi 1955 yılında IPL bulmuştur. İlk olarak ise FORTRAN dili tarafından kullanılmıştır. İkinci olarak kullanan dil COBOL olmuştur. FORTRAN ve COBOL prosedürsel bir mantıkla programlarını oluşturabilme olanağı tanıdığı için bilimden mühendisliğe kadar birçok alanda kullanılmışlardır. Bu mantık 1970 ’li yıllara kadar devam ettikten nesne tabanlı programlama çıkarılmıştır. Nesne tabanlı programlama mantığını kullanabilen programlama dilleri günümüzün en popüler dileri arasında yer almaktadırlar. Kullanmayanlar ise büyük oranda arka plana itilmişlerdir.

Mimari mantıklar bu oranda geliştirilirken fonksiyonel programlama dilleri de kararlı ve güçlü bir biçimde geliştirilmeye devam etmişlerdir. En güçlü fonksiyonel programlama dilleri: SML, OCaml, Haskell, Clean ve diğerleridir. En çok sevilen fonksiyonel programlama dilleri ise: APL ve List ‘dir. Tabii bu bahsettiğimiz dillerin yaşadığı zamanlar 1950 lerdir. Fakat akademik çevreler fonksiyonel programlama kavramını birinci öncelik olarak tutarak geliştirmeye devam etmişlerdir. Bu gelişimlerden de en çok söz getirenleri İngiltere Cambridge üniversitesinde gerçekleştiği akademik yayınlar ile bütün dünyaya duyurulmaktaydı. Çok öncelerden tamamlanmış olan bu dil global dünyanın gerçekleri ile karşılaştığında ise on yıllar önce ömrünü tamamlamış olarak görülüyordu. Fakat yurtdışındaki üniversitelerde karmaşık ve oldukça zor problemler fonksiyonel programlama ile çözülmeye devam edilmiştir. Zaten bu gelişimlerin bir yansısı olarak ta günümüzde birçok üniversitede mühendislik bilimleri fakültelerinde ders olarak okutulmakta olan MATLAB programının oluşmasına sağlamıştır. Matlab programının özelliği matematiksel, fiziksel ve mühendisteki birçok işlemi oldukça kolay fonksiyonlarla yapabilmemize olanak tanıyordu. Ayrıca kolay fonksiyonlar ile yapılabilmesinin dışında oldukçada performanslıydı. Fakat matematiksel işlemleri günümüz programlama dilleri ile yapmaya çalıştığımızda performans olarak ne Matlab ‘te ne fonksiyonel programlama da ne de bu yapıda olan programlama dilleri ile alabildiğimiz sonuçları alamıyorduk. Bugün ise, fonksiyonel programlama kavramını net olarak anlayabilmemiz durumunda en karmaşık problemleri bile çok basit yöntemlerle çözebileceğimiz belirtiliyor.

Fonksiyonel programlama, bütün programlama dillerinin derlemlerini (collection) başka fonksiyonlardan etkilenmemiş biçimde alarak bağımsız değişkenlerini geri dönüş değerleri olarak kabul eder. Nesne tabanlı programlama gerek görülmeyen problemlerin döngülerinin sonucunda oluşan yan ektilere izin vermektedir. Veri yapıları olarak kullandığımız tiplerin büyük bir çoğunluğunu, bellek yönetim kodlarımızı ve diğer birçok alıştığımız mantıkları fonksiyonel programlama ile kullanabilmemiz mümkündür.

Basit matematiksel modellerden yararlanılarak çözülebilen uygulamalar az ve öz kod yazılarak, uygulamalarımızı geliştirecek olduğumuz uygulamalarda yalnızca gerekli olan bileşenlerin referansa edilmesi ve görev çubuğunda minimum düzeyde bellek sarfiyatı yapması gibi özellikler fonksiyonel programlamanın temel yapı taşlarını oluşturmaktadır. Günümüzde fonksiyonel programlamayı kullanabileceğimiz dil F# ‘dır. F# ‘da fonksiyonel programlar yardımı ile karmaşık uygulamaları rahatlıkla geliştirebilmemiz mümkündür.

Niçin Fonksiyonel Programlama Önemlidir?

Fonksiyonel programlamayı düşünen insanlar genellikle kusurlu, hatalı, yaklaşılmaması gereken dil olarak görürlerdi. Fakat bunu düşünen insanları fonksiyonel programlananın kendilerine katacağı avantajları düşünmeden bu tür yargıları düşünüyorlar. Tartışılan bir diğer nokta ise günümüz programlama dilleri ile yaptığımız işleri fonksiyonel programlama dili yapamayacağımız yönünde şekillenmiştir. Günümüz dünyasında fonksiyonel programlamanın avantajlarını her durumda reddeden insanlara karşı tartışmalar esnasında verilmiş en iyi cevabı Chalmer teknik üniversitesinden John Hughes vermiştir. ( http://www.math.chalmers.se/~rjmh/Papers/whyfp.html )

John Hughes derki, “Fonksiyonel programcıların(FP) konuştukları orta çağ rahiplerinin konuştuklarına benzetilmemelidir. Çünkü FP ‘cılar bu dili sevdikleri için geliştirmektedirler. Rahipler ise maddi çıkar için işlerini yapmaktadırlar.”

Bir örnek ile fonksiyonel programlamayı anlatmak gerekirse, kendimizin düşünerek oluşturduğumuz fonksiyonların değerlini başka fonksiyonlara aktarabilmemize olanak tanınmaktadır. Bu özellik sizlere ilk görüşte önemsiz gelebilir, fakat değerlerin kullanılmasını olağanüstü oranda arttırmaktadır. Ayrıca veri ve fonksiyonlar arasındaki anlam farklarını da birbirinden rahatlıkla ayırabilmekteyizdir. Fonksiyonel programlama da kullanılan kısa ve basit yapıya nesne tabalı programlamalarda uymak zorundadır ve uymaktadırlar.

Ayrıca, fonksiyonları geri dönüş değerleri çokluda olabilmekte ve çağırılan fonksiyonların boşa kullanılması önlenmektedir. Bu mantığa uygun örnekleri gelecek makalelerimizde vereceğiz.

F# Nedir?

Fonksiyonel programlama çözülmesi zor olan bilgisayar problemlerini basit yöntemler ile çözmemize yarıyor fakat genel programlama teknikleri ile yapılan çözümler için yeterince iyi değildi. Bu nedenle fonksiyonel programlama nesne tabanlı programlama mimarisinin mantıki yapısını da bünyesine katarak işlemlerin daha rahat yapılabilmesine olanak tanır. Nesne tabanlı mimari yapısını bünyesine katarken de fonksiyonel programlama prensiplerinden vazgeçilmeden bu hafif geçiş yapılmıştır. Birleşimlerin sonucunda da karşımıza diğerlerinin özelliklerini taşıyan fakat kendine özgü olan bir dil ortaya çıkmıştır. Bu dilin adı ise F# ‘dır. F#, fonksiyonel programlama dilinin daha da iyileştirilmiş halidir.

Diğer popüler fonksiyonel programlama dillerinden OCaml, Haskell, Lisp ve Scheme dillerinin içerikleri, geleneksel kullanım yapıları ve gereklilikleri F# dilinin içerisine çalışma prensibine zarar vermeyecek şekilde eklenmiştir. Ayrıca F# .NET dilinin gücünü de diğer dillerle birlikte bünyesine katmıştır. F#, yaratıcıları tarafından araştırmalar sonrasında kriterlere uygun ve düzgün görülen üç dilin birleştirilmesi sonucunda oluşmuştur. F# ile problemlerin üzerinden çalışılması ve çözüm yollarını ararken uğraştığımız metotların azalması avantajları arasında yer almış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. Üç farklı dilin birleşiminden oluştuğundan bahsetmiştik. F# oluşurken yararlandığı ilk yapı .net olmuştur. .NET ‘in temel sınıf kütüphanelerini kullanılmıştır. Kullanılan .net kütüphaneleri Base Class Libary(BCL) ‘dir. .NET bünyesinde bulunup da temel olarak kullanılan dillerde C# ve VB ’dir.

F# ‘ın nesnesel modelleri oluşturulurken ise OCaml ’i nesnesel programlama mimarisine aykırı olmayacak biçimde kullanılmaya çalışılmıştır. Tekniksel felsefisi ise .NET ‘ten alınmıştır. Derleme işlemleri için kullanılan mimaride Common Language Infrastructure (CLI) ‘dır. .NET ‘in genel yapı tipleri de F# ‘ın bünyesinde kullanılmaya devam edilmiştir.

F# ‘ı geliştiren kişi, England Cambridge üniversitesinden Dr. Don Syme ‘dir. Ayrıca Dr. Syme Microsoft Research Lab(MSL) ‘da da akademik programlama dilleri üzerine çalışma yapmaktadır. Fonksiyonel programlama dilinin .Net mimarisi ve Visual Studio IDE ‘si ile de uyumlu çalışması için oldukça fazla çalışması olmuştur.

F# ‘ı kimler kullanmalıdır sorusuna gelirsek, MSL çalışanlarının C# ile F# arasında yaptıkları testlerin sonuçlarına göre eğer finansal veriler, matematiksel işlemler ve matematik fonksiyonları ile yapacağımız işlemler var ise F# ‘ın performansının C# ‘a göre daha iyi olduğunu söylemektedirler. Ayrıca oldukça büyük verilerle veya Matlab de olduğu gibi matrisler ile matematiksel işlemleri yapmak istiyorsak yine C# yerine F# ile çalışmamız öneriliyor. Çü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.

Çarşamba, Mart 26, 2008

F#


Combining the efficiency, scripting, strong typing and productivity of ML with the stability, libraries, cross-language working and tools of .NET.

F# is a programming language that provides the much sought-after combination of type safety, performance and scripting, with all the advantages of running on a high-quality, well-supported modern runtime system. F# gives you a combination of

The only language to provide a combination like this is F# (pronounced FSharp) - a scripted/functional/imperative/object-oriented programming language that is a fantastic basis for many practical scientific, engineering and web-based programming tasks.

F# is a pragmatically-oriented variant of ML that shares a core language with OCaml. F# programs run on top of the .NET Framework. Unlike other scripting languages it executes at or near the speed of C# and C++, making use of the performance that comes through strong typing. Unlike many statically-typed languages it also supports many dynamic language techniques, such as property discovery and reflection where needed. F# includes extensions for working across languages and for object-oriented programming, and it works seamlessly with other .NET programming languages and tools.

For further information, read about F# in more detail, download the F# distribution, read the getting started pages (a guide to installation and running your first program), go to the F# Manual, and learn about the growing F# Community. A short FAQ is also included on this site.

Some Starting points

Original web site:http://research.microsoft.com/fsharp/fsharp.aspx

See you later...