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

Magento 1.0 Kararlı Sürümü Yayında

sempsteen

Oldukça başarılı bir geliştirme süreci geçiren, Zend Framework üzerine kurulu, piyasadaki rakiplerine uzak ara fark atan, açık kaynak kodlu e-ticaret platformu Magento'nun uzun süredir beklenen 1.0 kararlı sürümü bugün (10 dk önce) yayınlandı.

İlk Yerli Web Geliştirme Platformu!.....

anonim

İlk yerli web geliştirme platformu “MoreMotion”, Mor Yazılım Şirketi tarafından piyasaya sunuldu.
Bileşen tabanlı yazılım mimarisiyle tasarlanıp, Java teknolojisi ile geliştirilen “MoreMotion” Web Geliştirme Platformu, bu alanda dünya pazarını elinde tutan firmalara ciddi bir alternatif olmaya hazırlanıyor.

MyAsist Web Framework

myasist

MyAsist, "web Tabanlı uygulamaların geliştirmesini en verimli halde nasıl yaparız?" sorusuna çözüm arayışlarımızın bir ürünüdür.

Kişisel ve Öğrenim amaçlı kullanımlar için ücretsiz olarak edinilebilir.

Video: Smalltalk, bir video, bir IDE ya da test-driven development üstüne...

FZ

Eski Smalltalkçulardan Kent Beck, Test-Driven Development By Example kitabında genellikle Java ve çok az bir yerde de Python kullanıyor. Lakin üstadın zaman zaman hayıflandığını görüyoruz, "ah şimdi elimin altında Smalltalk, Smalltalk IDE ve Refactoring Browser" olsaydı diye.

Neden?

Belki de cevabı burada yatıyor:

Internet Explorer`ın Sağ Üst Köşesindeki Pencereden Kurtulun!

FZ

Eğer benim gibi bir Internet Explorer kullanıcısı iseniz ve sağ üst köşedeki dalgalı pencere sembolünden gına geldiyse, tepede Microsoft Internet Explorer yazısı görmek gözlerinizi yoruyorsa yapmanız gereken Edensoft'u ziyaret etmek ve MyLogo yazılımını çekmek. Gerisi sizin keyfinize kalmış.