SORU
24 EYLÜL 2008, ÇARŞAMBA


Dinamik tip dillere karşı statik tür dil

Statik tür dillere göre daha dinamik tip dillerinin avantajları ve kısıtlamaları nelerdir?

Ayrıca Bkz: whats with the love of dynamic languages (çok fazla tartışmaya açık bir konu...)

CEVAP
24 EYLÜL 2008, ÇARŞAMBA


Statik tür sistemler bazı hatalar statik olarak, çalışan ve belirli bir açıdan sağlamlığını kanıtlamak için çalışırken olmadan programı teftiş ortadan kaldırmak için isteyin. Bazı tip sistemler diğerlerine göre daha fazla hata yakalamak mümkün. Örneğin, C# doğru kullanıldığında null işaretçi istisna ortadan kaldırabilir, oysa Java böyle bir gücü vardır. Twelf aslında guarantees that proofs will terminate, "" halting problem. çözme hangi tip bir sistemi vardır

Ancak, herhangi bir tür sistem mükemmel değildir. Hataları belirli bir sınıfı ortadan kaldırmak için, ayrıca kuralları ihlal eden son derece geçerli bazı programlar reddetmelidir. Bu Twelf gerçekten durdurma sorunu çözmez yüzden, bu sadece tuhaf bir şekilde sona erdirmek için gerçekleşen son derece geçerli deliller çok sayıda dışarı atarak önler. Aynı şekilde, Java tür sistemi Clojure PersistentVector heterojen bir dizi kullanımı sayesinde uygulama reddeder. Çalışma zamanında çalışıyor, ama yazın sistem bunu doğrulayamıyor.

Bu nedenle, pek çok tür sistemler sağlamak "kaçar", yollar statik denetleyicisi geçersiz kılmak için. Çoğu dil için, bu biraz da olsa döküm şeklinde, (C# ve Haskell) olarak işaretlenmiş olan tüm modları var"". güvensiz

Öznel olarak, statik yazmayı seviyorum. Uygulanan doğru (ipucu:değilJava), statik tip sistemi üretim sistemi, kaza öncesi hatalardan arındırılmasını büyük bir yardım olabilir. Dinamik olarak yazılan dil tüm zamanların en sıkıcı olan daha fazla birim test, ihtiyaç eğilimindedir. Ayrıca, statik olarak yazılan diller imkansız ya da dinamik tip sistemlerde güvensiz ya da belirli özellikleri olabilir (implicit conversions akla). Gereksinimleri ve tat öznel bir soru. Artık ya bir çekirdek Java kullanarak Montaj patch yedek bir senaryo yazmaya teşebbüs edeceğini daha Ruby sonraki Eclipse kurmak istiyorum.

Oh, ve bunu söyleyen insanlar "xyazı yazmaktan 10 kat daha verimliyyazarak" sadece duman üfleme. Dinamik yazarak "" birçok durumda daha hızlı, ama gerçekten pahalı bir uygulama yapmaya çalış . sonra toprak kaybeder hissedebilirsiniz ^em>çalıştırın. Aynı şekilde, statik yazma gibi görünse de mükemmel bir güvenlik ağı var, ama daha karmaşık genel türü bir bak Java tanımları en geliştiriciler göz at gözlüğü için koşan gönderir. Hatta yazın sistemleri ve verimlilik ile, gümüş kurşun yok.

Son bir not: dinamik yazarak statik karşılaştırırken performansını merak etme. V8 ve TraceMonkey gibi Modern JİTs tehlikeli derecede yakın statik dil performans geliyor. Ayrıca, aslında Java aslında derler aşağı bir doğası gereği dinamik Ara dili olması bir ipucu bu çoğu durumda, dinamik yazarak değil, büyük performans-katil bazı insanlar çıkacak.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Commander Chalkboard

    Commander Ch

    20 Ocak 2014
  • infiniTuts

    infiniTuts

    18 Ocak 2012
  • LiquidMusick

    LiquidMusick

    23 Aralık 2010

İLGİLİ SORU / CEVAPLAR