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

Browser hafıza kullanımı karşılaştırması

conan

Bu sabah surf halindeyken phoenix'imin kaç tane tab açabileceğini denemek istedikten sonra aklıma browserların hafıza kullanım karşılaştırmasını yapmak geldi. Elimde olan iki browserda genelde gezindiğim 17 sayfayı aynı anda açarak Task manager vasıtasıyla hafıza kullanım oranlarını karşılaştırmaya çalıştım. İşte sonuçlar.

2 Günde İşletim Sistemi Yazabilir Misiniz?

FZ

Programlamaya bir şekilde girmiş hemen herkesin aklından bir ara geçmiş sorulardan biridir, "işletim sistemi nasıl yazılır?". İşletim sistemleri bilgisayar dünyasının en popüler, en gizemli, en çok tartışılan ve piyasayı belirleyen konularından biri olagelmiştir. Kimisine göre basit, kimisine göre karmaşık olan bu işte kavram karmaşası da az değildir, çekirdek ile dağıtımı karıştıranlar mı istersiniz, neyin temel işlevsellik olduğu üstüne sabaha dek tartışanlar mı yoksa hangi donanımların esas alınması ve hangi sürücülerin desteklenmesi gerektiğine dair kavga edenler mi istersiniz... BSD, Solaris, Linux, BeOS, VMS, MS Windows ve daha pek çok geliştirme ekibine bakınca konunun popülaritesini ve karmaşıklığını anlamak mümkündür.

Pekiyi bu konuda birkaç günlük bir çalışma ile işin temellerini öğrenmek mümkün müdür? 2 günde işletim sistemi yazabilir misiniz?

GCC 4.0 geliyor, RC1 yayınlandı

Soulblighter

C, C++, Objective-C, Fortran, Java ve ADA dillerinde yazılmış programları 15'in üzerinde farklı bilgisayar mimarisi için derlememize imkan veren GCC (GNU Compiler Collection) 4.0 RC1 yayınlandı. Değişiklikleri buradan okuyabilir, buradan da GCC 4.0 RC1'i indirebilirsiniz.

GNU/Linux sistemlerin en önemli, kritik ve olmazsa olmaz bileşenlerinden biri olan GCC derleyici süitinin yeni sürümü ile birlikte bu derleyici ile derlenen Firefox, OpenOffice.org, Linux çekirdeği gibi pek çok yazılımın kalitesinde ve performansında artış bekleniyor.

Rakun XML Uygulama Platformu 0.3.2 Çıktı

evolution

Web tabanlı kurumsal uygulamaları (ERP, MRP, CRM, v.b.) XML yapısında geliştirme altyapısını sunan Rakun Platformu 0.3.2 sürümüne ulaştı. Detaylı bilgi için buraya tıklayabilirsiniz.

GNU/Linux için yeni bir sözlük: YZC

ridvantulunay

YZC, yeni bir GPL lisanslı sözlük uygulaması.

0.02 sürümü ile yapısına Ezberletici eklenen 65.552 kelimelik güzel bir sözlük.

http://www.yaz-ar.com/home/yzc/ adresinden sözlüğe ve kaynak koduna erişebilirsiniz.

Sözlük GAMBAS ve SQLITE kullanılarak hazırlanmaktadır, ilerleyen sürümlerde yapısına sınavcı, genişletilebilirlik ve GTK desteği eklenecektir.