SORU
17 Mart 2010, ÇARŞAMBA


Neden IoC / DI Python ile ortak değil mi?

1* / DI *Java ile kapsamlı web uygulamaları, hemen hemen tüm mevcut çerçeve ve Java EE kullanılan çok yaygın bir uygulama. Öte yandan, orada da bir sürü Python web uygulamaları, ama yanında Uygulamalarınız (hangi duymuştum olmalı gerçekten korkunç kod) IoC değil, galiba çok ortak Python dünya. (Eğer yanıldığımı düşünüyorsan bazı örnekler adı) lütfen.

Elbette popüler Java IoC çerçeveler Python için birkaç klonlar, springpython örneğin vardır. Ama bunların hiçbiri pratikte kullanılan gibi görünüyor. En azından, böyle bir şey kullanan Django veyasqlalchemy <insert your favorite wsgi toolkit here> web tabanlı bir uygulama üzerine stumpled ettim.

Bence IoC vardır makul avantajları ve yapmak kolay değiştirmek için django-default-user-model, örneğin, ama aşırı kullanımı, arayüz sınıfları ve IoC Python görünüyor biraz garip değil »pythonic«. Ama belki birisi IoC yaygın olarak kullanılan Python değil neden daha iyi bir açıklama vardır.

CEVAP
17 Mart 2010, ÇARŞAMBA


Aslında DI/IoC olduğunu sanmıyorumbunadir Python. Nenadir, ancak, DI/IoCçerçeveler/kaplar.

Dİ kabı ne iş yapar? bunu bir düşün: Sana izin verir

  1. Tel birlikte tam bir uygulama içine bağımsız bileşenler
  2. ... zamanında.

İsim verdik "kablo" ve "zamanında":

  1. betik
  2. dinamik

Yani, Dİ kapsayıcı bir şey yok ama dinamik bir betik dili için bir tercüman olduğunu. Aslında şöyle ifade edeyim: tipik bir Java/.NET Dİ kapsayıcı bir şey ama çirkin gerçekten kötü dinamik bir betik dili için berbat bir tercüman, genellikle XML tabanlı bir sözdizimi.

Python program ne zaman, neden senin emrinde güzel, parlak bir betik dili varsa, çirkin, kötü bir betik dili kullanmak istiyorsunuz? Aslında bu daha genel bir soru: hemen hemen her dilde program ne zaman, neden ve emrinde IronPython, Jython varsa, çirkin, kötü bir betik dili kullanmak istiyorsunuz?

Yani, özetlemek gerekirse:uygulamaDI/IoC aynı nedenlerden dolayı Java, Python içinde bir o kadar önemli.uygulamaDI/IoC ancak, dilin yerleşik ve genellikle tamamen kaybolur bu kadar basit.

(Burada kısa bir kenara için bir benzetme: toplanma, bir yordam çağrısı oldukça büyük bir anlaşma var kaydetmek yerel değişkenler ve kaydeder hafızasına kaydetmek iade adresi bir yerlerde, değişiklik Yönerge işaretçisi için alt ettin de aradın, düzenlemek için bir atlama geri içine kendi alt zaman bitti, koy bağımsız bir yere aranan bul onları. DÜŞÜK: derleme, "" Tasarım Deseni ve yordam çağrıları inşa edilmiş olan Fortran gibi diller vardı önce, insanların kendi inşa edildi "yordam çerçeveler". yordam çağrısı Altyordamını çağırır "" Python, sadece yordam çerçeveler kullanmayın çünkü?) nadir olduğunu söyler miydiniz

BTW: neye benzediğini bir örnek mantıksal sonucuna Dİ almak, Gilad Brachabakmak için'konusunda Newspeak Programming Language ve yazıları s:

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • chickenby

    chickenby

    2 HAZİRAN 2008
  • MADFINGER Games a.s.

    MADFINGER Ga

    21 NİSAN 2009
  • RiverCityGraphix

    RiverCityGra

    6 Ocak 2012