SORU
31 Ocak 2011, PAZARTESİ


Fonksiyonel programlama yazılım mühendisliği metodolojisi var mı?

Bugün öğretmiş olduğu gibi yazılım Mühendisliği, nesne yönelimli programlama ve 'doğal' nesne tabanlı dünyanın görünümü. yoğunlaştı. Birkaç adım ve (UML) aletler kullanın-büyük-diyagramları gibi bir çok sınıf bir model içine alan bir model nasıl veya sınıf diyagramları açıklayan ayrıntılı bir metodu var. Birçok programcı bu yaklaşımı içselleştirmiş ve sıfırdan nesne yönelimli uygulama tasarımı hakkında iyi bir fikrim var.

Yeni yutturmaca bir sürü kitap ve rehberler veriliyor fonksiyonel programlama vardır. Ama işlevsel yazılım mühendisliği ne dersin? Lisp ve Clojure hakkında okurken, iki ilginç ifadeler için geldim:

  1. İşlevsel programlar genellikle yukarıdan aşağıya yerine aşağıdan yukarıya doğru gelişmiştir ('Lisp', Paul Graham)

  2. Fonksiyonel Programcılar OO-Programcılar nesne/sınıfları (Java Programcıları için Clojure', Zengin Hickley ile konuşma). kullandığı Haritalar kullanın

Sistematik (model tabanlı ?) için metodoloji ne demek fonksiyonel bir uygulama tasarımı, yani Lisp ya da Clojure? Ortak adımları, ne bir eser, ne bir çözüm alanı için sorun onları uzaydan göster kullanırım?

CEVAP
5 ŞUBAT 2011, CUMARTESİ


Yazılım mühendisliği halkı henüz fonksiyonel programlama anlamamış olması çok şükür. Burada bazı benzerlikler:

  • Birçok OO "tasarım desenleri" üst düzey olarak yakalanan fonksiyonları. Örneğin, Ziyaretçi bir desen olarak işlevsel dünyada bilinen "" eğer sivri kafalı kuramcısı, bir (veya "") olay bununla. kat Fonksiyonel dillerde, veri türleri, çoğunlukla ağaç ya da dizilerini ve her ağaç türü doğal bir olay bununla ilişkili vardır.

    Üst düzey fonksiyonları genellikle programlama bazı yasalar ile, nam-ı diğer "ücretsiz teoremleri". bu

  • Fonksiyonel programcılar çok daha ağır OO programcılar daha diyagramları kullanın. OO diyagramları ile ifade edilir ne kadar yerine dile getirditürleriya da "imza olarak düşünmek gerekir", "program türleri". Haskell de "türü sınıflar arabirimi türü gibidir.",

    Türleri kullananlar fonksiyonel programcılar "türlerini doğru; kod aslında kendi kendini yazar." genel olarak düşün

    Tüm işlevsel dil kullanımı açık tip, ancak How To Design Programs kitap, mükemmel bir kitap için öğrenme Scheme/Lisp/Clojure, dayanır ağır "veri açıklamaları", yakın akraba türler.

Sistematik (model tabanlı ?) için metodoloji ne demek fonksiyonel bir uygulama tasarımı, yani Lisp ya da Clojure?

Herhangi bir tasarım yöntemi soyutlama iyi çalışıyor verilere dayalı. Bu dili açık bir tür olduğu zaman daha kolay olduğunu düşünüyorum, ama bile olmadan çalışır. Kolayca fonksiyonel programlama adapte olan soyut veri türleri için tasarım yöntemleri hakkında güzel bir kitapProgram geliştirmede soyutlama ve ŞartnameBarbara Liskov ve John Guttag tarafındanilkedition. Liskov bu iş için kısmen Turing ödülünü kazandı.

Lisp için benzersiz bir tasarım metodolojisi dil uzantıları çalıştığınız probleme daha yararlı olurdu ne karar vermektir, ve daha sonra hijyenik makrolar dilinize bu yapıları eklemek için kullanın. Tasarım bu tür hakkında okumak için iyi bir yer Matthew Flatt 1 ** Madde. Bu makalede bir ödeme duvarı arkasında olabilir. Sen-ebilmek da bulmak daha genel malzeme bu tür tasarım tarafından arama terimi "etki alanına özel dil gömülü"; özellikle DANIŞMANLIK ve örneklerin dışında ne Matthew Flatt kapsar, ki muhtemelen başlangıç Graham On Lisp belki de ANSI Common Lisp.

Kullanırım ne ortak adımlar nelerdir?

Ortak adımları:

  1. Programda verileri ve işlemleri tanımlamak ve soyut veri türü bu veri temsil eden tanımlayın.

  2. Ortak eylemler veya hesaplama şekillerini belirlemek ve üst düzey olarak ifade fonksiyonları veya makroları. Yeniden düzenleme kapsamında bu adımı atmasını bekliyoruz.

  3. Eğer yazılan işlevsel bir dil kullanıyorsanız, yazım denetleyicisi, erken ve sık sık kullanın. Eğer Lisp ya da Clojure kullanıyorsanız, en iyi uygulama max ilk ünite testleri—test odaklı geliştirme de dahil olmak üzere fonksiyon sözleşmeleri yazmak. Ve sizin durumunuzda ClojureCheck deniyor gibi görünüyor platformu, taşıdık olmuştur ne olursa olsun kullanmak isteyeceksiniz. Üst düzey fonksiyonları kullanan kod rastgele testler oluşturmak için son derece güçlü bir kütüphane.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Codecourse

    Codecourse

    3 ŞUBAT 2009
  • foreignimage

    foreignimage

    13 HAZİRAN 2006
  • PhoneArena

    PhoneArena

    7 NİSAN 2006