F# ile Programlama - Microsoft Dil Teknolojilerinde Nereye Gidiyor?

0
FZ

Don Syme’in F# programlama ile ilgili tanıtım ve demo videolarını gördükten sonra Pazartesi mutlaka F# derleyicisini ve etkileşimli kabuğunu indirip denemem gerektiğini düşünmüştüm.

Emacs + SLIME + Common Lisp tarzında rahat bir etkileşim ve hızlı geliştirme, deneme, sonuçları anında görme imkanı sunan F# bir betik dilinin kıvraklığı ile fonksiyonel programlamadan ve ileri programlama tekniklerinden faydalanmayı sağlıyor. Derlenen programlar .NET IL (Intermediate Language) koduna derlendiği ve bunlar da JITlenerek (Just In Time compilation) çalıştırıldığı için performans gayet iyi görünüyor.

F# ve DirectX 3D

Tanıtım videosunda ekip başı Syme’ın belirttiği gibi kökleri ML, SML, OCAML gibi dillere dayanan F# temelde bir fonksiyonel programlama dili. Bununla birlikte OCAML geleneğine uygun şekilde fonksiyonel programlamanın yanısıra imperatif ve nesneye yönelik programlama paradigmalarını da doğal şekilde destekliyor. C# gibi bir dille kıyaslandığında çok daha az ve öz şekilde algoritmaları ifade edebilen F#, etkileşimli kabuğu sayesinde de dosyadaki kaynak kodun bir kısmını seçip ALT+ENTER gibi bir tuş kombinasyonu ile de sadece o kısmın çalışmasını ve sonuçların hemen görülmesini sağlıyor.

Demo videosundaki zamana bağlı olarak dalgalanan 3 boyutlu yüzeyde “multi-threaded” olarak gezinen birçok top (ve bunlara eşlik eden vektörler) değişik açılardan gerçek zamanlı olarak fare ile evrilip çevrilirken F# performansı hakkında ilk izlenimlerin epey olumlu olmasını sağlıyor. Bu etkiyi elde etmek için yazılan kaynak kodun sadeliği ve esnekliği fonksiyonel programlamaya alışık olanlar için şaşırtıcı değil belki ama C# ya da VB programcılarını (ve kimbilir belki de Java ;-) bir hayli etkileme potansiyeline sahip.

F# derleyicisi ve etkileşimli kabuğu Microsoft .NET ve GNU/Linux MONO ortamlarında çalışıyor. Tabii eğer MS ortamındaysanız ve Visual Studio.NET kullanıyorsanız (2003 ya da 2005) o zaman F# Add-In ile doğrudan VS.NET’in sözdizim renklendirme, yazarken XML yorumlarına dayanarak programcıya ipuçları verme, tür bilgisi gösterme, vb. avantajlarından da faydalanmak mümkün. Bunun dışında F# ile fonksiyonel programlama yaparken tüm .NET sınıf hiyerarşisi de elinizin altında.

Demo videosunun ilk bölümünde de gösterilen (ve kesinlikle 3 boyutlu yüzey animasyon örneği kadar eğlenceli olmayan ;-) ) RSS işleme örneği F#’ın tıpkı güçlü bir betik dili gibi olarak da kullanılabileceğinin güzel bir örneği. Burada kısaca alıntılamak gerekirse, önce .NET sınıf hiyerarşisinden faydalanarak çok kolay bir şekilde bir HTTP veri çekme fonksiyonu yazıyoruz (#light direktifi sayesinde sözdizimini hafifleştirmek ve bazı OCAML tarzı anahtar sözcüklerden kurtulmak ve Python tarzı “girintileme ile kodu anlamlandır” kuralını dayatmak mümkün):

Yazının devamı buradan okuyabilirsiniz...

Görüşler

0
dfix
Sanırım bu şirket ilk yola çıkma amaçına (derleyici geliştirme) geri dönmekte. birazdan indirip akademik lisanslı visual studio.NET ile deneyeceğim.
0
FZ
Microsoft'un ilk yola çıkma amacı bu muydu bilmiyorum ama son bir iki yıldır bu tür konulara epey yatırım yapıyor. Denedikten sonra izlenimlerinizi buraya yazarsanız seviniriz.
0
dfix
Sözdizimi c# ve java dan çok daha sevimli ve for, if yapıları ve bazı oparatörler bana
pascalı hatırlattığı için içim buruldu biraz. kişisel olarak tam anlamıyla nesne tabanlı
programlamayı dayatan c# java ve benzeri dilerin bazen programcıyı kısıtlayıcı ve gereksiz
yere yollarını uzantmalarına neden olduğunu düşünmekteyim bunun yerine pascal c++ ın
yaklaşımının yani nesnel programlamamı fonksiyonel programlamamı yada her ikiside seçeneğinin verilmesi daha uygun, etkili ve esnek bir yaklaşım. Sözdizimlerinin tamamen okunabilri değilde sezgisel olarak anlaşılarbilir olması gerektiği kanatindeyim.
Daha az kod yazma işine gelince ciddi bir projede mucizevi bir etkisi olabilirmi emin değilim az kod yazmayı vaadeden dillerde bu özellik az kılavye kullanmaktan öte gitmiyor ise daha hızlı yazarak bu açığı kapatırız:) ancak az kod yazma vaadi; yanısıra daha esnek bir dil sağlıyorsa o zaman durum değişir. bu bağlamda çok fazla inceleme fırsatım olmasada bazı kod satırlarını anlamakta güçlük çeksemde F# heycan verici iyi bir adım olduğunu düşünüyorum.
0
FZ
Yeni bir dilin sezgisel olarak anlaşılması gerektiğini düşünmüyorum. Sezgilerle alışkanlıkları karşılaştırmak sık yapılan bir hata. Matematiksel notasyon da yeni başlayan bir öğrenci için pek sezgisel değildir ama yıllarca bunu kullandıktan sonra "sanki öyle" imiş gibi gelir.

Oradaki bazı ifadeleri de anlamamanız doğal çünkü bu yeni bir dil, öte yandan o kadar da yeni değil o sözdizimi (bilgi işlem tarihi açısından), yaklaşık 20 yıldır geliştirilen ML, SML, OCAML gibi fonksiyonel dillerin sözdiziminin büyük kısmını miras alıyor.

Kısa kod yazmaya gelince ben bunu klavye yıpranma payından ziyade okurken ki göz ve zihin yıpranma payı ile ilintiregeldim hep. Kısa olsun diye değil, okurken daha az okuyup daha kolayca anlaşılsın diye kısa prensibi güdüldü ise eğer ve buna ek olarak tür çıkarımları, güvenlik, program doğruluğu, vb. avantajlardan da taviz vermiyorsa bu kısalık, işte o zaman avantajlı olduğunu düşünüyorum. Ayrıca çok özel insanları bir yana bırakırsak, ortalama ve ortalamanın biraz üstü programcıların günlük düzgün ve kaliteli kod üretme miktarının (kod satır sayısı bakımından) belli bir sayıyı pek geçmediği göz önünde bulundurulacak olursa o zaman az laf ederek çok şey ifade eden dillerin avantajları daha iyi anlaşılacaktır.
0
dfix
Esasında tam olarak sezgisel demek istemediğimin farkına vardım. demek istediğim doğal reflex yada insanların doğuştan gelen herkeste aynı olan eylimleri ve tercihleri şöyleki bir yerde insan beyninin soldan sağa yazıp okumaya daha meyilli olduğunu okumuştum bu doğrultuda soldan sağa yazmak veya okumak tam tersini yapmaktan daha kolaydır çünki doğal eylimin yönünde tercih yapmış olur ve fazladan caba sarfedilmez

hp pavilion serisi bir laptopum var yukardan aşagıya tuşlar söyle home, page up, page down, end ben sayfanda yukarı haraket için neden home tuşuna her seferinde kazara basıyorum çünki home en üste bende sayfada üste çıkmaya çalışıyorum aynı durum sayfanın altına inerken de geçerli hata satır içinde haraket edekende nede olsa page up page down içteki tuşlar. bunun bir akışkalık olduğunu sanmıyorum ayrıca daha önce kullandığım kılavyeler bu tercihimde etkili olabiecek tus dizilimlerine sahip değildiler. bu doğal bir eylim. yanlış hatırlamıyorsam nescape 1.0 da kaydırma çubukları ters çalışıyordu sonra insanlar uyum sağlıyamadığı için değiştirildi. yani demek istediğim insanları doğuştan gelen eylimlerine ters düşen sözdizimlerini ve sembolleri anlama ve kullanmaları için daha fazla caba ve dikkat harcamalarını dolayısıyla zaman kaybetmelerine neden oluyor. programlama dillerini doğal eylimlere ve bunu doğrultusunda kazanılan alışkanlıklara uygun olması gerek örneğin pascal da kullanılan := atama oparetörü veya <> eşitdeğil operatörü sadece bence değil birçok kişi tarafında mantıki ve doğal nedenlerden dolayı = ve != operatörden çok daha uygun olduğu söylenmekte. umarım ne demek istediğim anlaşılmıştır
0
mentat
giriş gelişme tamam da, o sonuçtaki c/pascal eşit ve eşit değil operatörleri alakasız olmuş. yani, başta verdiğin örneklere (belki) eyvallah denebilir. ama oradan getirdiğin doğrular, nası oluyor da o operatörlere uygulanabiliniyor.

ps: eşit operatörünün := olması hangi mantığa sığar ki ayrıca. pascalla başlamıştım ben de gençliğimde, ve bi türlü eğilememiştim := operatörüne örneğin.

bi de eğilmek, eyilmek değil..
0
FZ
Eşit operatörü? := sembolü atama operatörü değil mi? Sanırım temel karmaşa oradan başlıyor (insanlar matematik eğitimini ilkokuldan beri aldıkları için eşittir, değildir, bir değeri bir yere yerleştirme yani atama konularını başlangıçta epey karıştırabiliyorlar). Lakin çok da mühim görmüyorum ben çünkü bir konvansiyon. Yani genlerimize kazınmış şeyler değil programlama dilleri notasyonları yahut matematiksel notasyon. Olsa olsa bir terminoloji ile birkaç yıl uğraşmanın getirdiği alışkanlığın değişmesinin zorluğundan bahsedilebilir.
0
dfix
pascal da := atama operatörüdür sanırım tekrar pascal çalışsanız iyi olur üstelik yazıda eğilmek kelimesini kullandığımı sanmıyorum o eylim yani meyil in eş anlamlısıdır. fazla imla hatası yapmam benim için doğal çünki ben disleksiyim. belkide tüm fikirlerimin nedeni bu olabilir. yani normalden farklı algılamam.
0
Zebani
araplar sağdan sola okuyor. dolayısıyla şüpheliyim. insanların soldan sağa okumaya eğilimli doğduklarından. Sanırım çinli zatlar da yukarıdan aşağıya okuyor. :)
0
FZ
Basit bir düşünce deneyi: Sağ elli olduğunuzu var sayalım. Sağ elinize bir çekiç, sol elinize de çivi gibi bir şey alıp sert bir tablete vura vura bir şey yazmaya çalışın. Şimdi çekici sol elinize alın, çiviyi de sağ elinizle hizalayın, bir de öyle deneyin. Hangi kombinasyon ile yazmak daha kolay?
Görüş belirtmek için giriş yapın...

İlgili Yazılar

Imposter v0.3

butch

Gürer Özen tarafından geliştirilen Imposter 0.3 sürümüne ulaştı. OpenOffice.org Impress sunumlarını OpenOffice.org olmaksızın görüntülemeyi sağlayan Imposter'i edinmek için buraya.

Xynth'i GP32X'e Taşıdık

anhanguera

Selam,

Dün şu çok ses getiren GP32X'den bir tane de ben aldım. Evet güzel bir oyuncak, ama Sony PSP ile kıyaslanamayacak kadar da amatör ;)

Google Code Jam 2004

mentat

Google Code Jam 2004 için kayıtlar açıldı. 15 Eylül'e kadar kayıtlar sürecek. Yarışma ve ödüller (hemen hemen) herkese açık, Java, C++, C# veya VB.NET kullanılabilen diller, keyifli bir deneyim olabilir gibi. Eleman bulmak için gayet akıllıca bir fikir.

kernelguys.org: Türkçe Sistem Programlama

raistlinthewiz

Birsüre önce almış olduğum domain "kernelguys.org"u değerlendirmeye karar verdim. Aslında Mambo kurulumu yapmayı düşünürken bi anda kendimi vbulletin bir sistemle uğraşırken buldum.

Amaç?

http://kernelguys.org'un amacı Türkçe sistem programlama sunabilmek ve tabii ki eğer mümkün olursa bu konuyla ilgilenenleri bir araya getirebilmek.

Hiçbir şekilde kernelguys "hadi yeni bir forum kuralım" diyerek kurulmuş bir site değildir; vbulletin ihtiyaçlarımızı karşıladığı için seçilmiştir. Şu anda siteye aktif olarak içerik eklemekte ve bu süreçte diğer arkadaşlardan da destek beklemeyiz.

Programlamanın Tao´su 3. ve 4. Kitap

FZ

3. Kitap - Tasarım

Ve şöyle dedi usta programcı:

"Program test edilmeye başlandığında tasarım değişiklikleri yapmak için artık çok geçtir."