Dinamik Dil Çalışma Zamanı ve C # 4.0 arasındaki ilişki nedir?


11

Diyelim ki, bugün olduğu gibi .NET platformunda bir dinamik dil derleyici / yorumlayıcı, belki de bir Şema yorumlayıcısı oluşturmak istedim. Dinamik Dil Çalışma Zamanı'nı (DLR) kullanmak veya dilimin dinamik özelliklerini uygulamak için C # 4.0 kullanmak daha iyi olur mu? Yoksa ikisine de ihtiyacım var mı?

Bu alanda, özellikle IronScheme ve IronPython ile ilgili başka çalışmalar yapıldığını biliyorum . Bu dillerin her ikisi de DLR'yi kullanır; IronPython'un DLR'nin en güncel sürümünü (yaklaşık bir yaşında) kullandığını düşünüyorum, IronScheme ise DLR'nin erken bir versiyonunun erken, ağır değiştirilmiş bir çatalını kullanıyor. Ancak bu derleyiciler oluşturulduğunda C # 4.0 kullanılamadı.

Rob Conery'nin Massive ile çalışmalarını C # 4.0'ın dinamik özelliklerini kullanarak gördüm ; oldukça etkileyici. Ancak C #, bir dinamik dil derleyicisinin / yorumlayıcısının tam kapsamlı çabalarını yerine getirebilir mi? DLR'de C # 'dan eksik olan özellikler var mı, yoksa DLR esas olarak C # 4.0'a mı yuvarlandı? Yalnızca C # 4.0'ı yalnızca kullanırsam DLR'nin önemli özelliklerinden herhangi birini kaçırır mıydım?


Net 4.0 Dinamik özelliklerinin DLR'ye dayandığını düşünüyorum.
Dave Nay


@Dave: .NET 4.0 çalışma zamanı ve DLR arasındaki ilişkiyi ayrıntılı olarak açıklayan bir makaleye geçerli, yetkili bir bağlantıdan memnun olurum. Bu, C # 4.0'daki dinamik tür sistemi yeterince sağlamsa ve DLR'de .NET 4.0 çalışma zamanından çıkarılmış kritik özelliklerin olup olmadığı konusunda adil bir fikir verecektir. Bazı makaleler buldum, ancak hepsi DLR'nin şekillendiği gün yazıldı ve birçoğu spekülatif.
Robert Harvey

Yanıtlar:


3

Okuduğumu hatırladığım makale bu. msdn.microsoft.com/en-us/magazine/gg598922.aspx

Daha sonra DLR, C # ve Visual Basic'teki dinamik özellikleri desteklemek için .NET Framework 4'e dahil edildi. Yalnızca C # 4'te dinamik anahtar kelimeye ihtiyacınız varsa, .NET Framework'ü kullanabilirsiniz ve çoğu durumda DLR ile tüm etkileşimleri tek başına halledecektir. Ancak, .NET'e yeni bir dinamik dil uygulamak veya taşımak istiyorsanız, dil uygulayıcıları için daha fazla özellik ve hizmete sahip olan açık kaynak projesindeki ekstra yardımcı sınıflardan yararlanabilirsiniz.


3

Gönderen: jimmysch

Robert

Gerçekler: IronRuby ve IronPython'un her ikisi de DLR'yi kullanır, aslında DLR'nin özelliklerinin çoğu IronPython'un önceki uygulamalarından türetilmiştir. DLR IronScheme'in hangi sürümünün nasıl kullanıldığını bilmiyorum. DLR'nin (Microsoft.Scripting.Core.dll) bir kısmı, System.Core.dll içinde .NET 4.0'da gönderildi ve bu bölüm, C # 4.0'ın "dinamik" anahtar kelime desteği için kullandığı, bu nedenle bu derleme değil DLR'nin .NET 4.0 sürümlerinde bulunur.

Diğer DLR kod temeli (Microsoft.Scripting.dll, Microsoft.Dynamic.dll en önemlisidir) bu CodePlex projesinden veya IronLanguages ​​GitHub projesinden indirilebilir. Barındırma dillerinin tüketicileri ve üreticileri için API'ler sağlarken, .NET 4.0'daki API'ler aslında yöntemlerin dinamik gönderilmesini sağlamak içindir.

.NET 4.0 için dinamik bir dil derleyicisi yazmak için, uygulama dili olarak C # ve ortak derleyici görevlerini basitleştirmek için bir kitaplık olarak DLR kullanırdım. DLR'de basit bir örnek dil için Sympl.

~ Jimmy

http://dlr.codeplex.com/discussions/268746#post656778

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.