2011-07-18 29 views
7

Tôi đã xem xét sử dụng DLR cho ngôn ngữ đồ chơi của mình, và tôi hơi bối rối. Nếu .NET 4.0 có cây LINQ Expression, Dynamic Objects và kiểu "dynamic", thì chúng ta có thực sự cần DLR nữa không? Gì DLR quy định rằng sẽ làm cho cuộc sống của tôi dễ dàng hơn khi một nhà phát triển ngôn ngữDLR có cần trong .NET 4.0 không?

--- Sửa ----

Hãy để tôi giải thích câu hỏi của tôi một chút tốt hơn. Dự án DLR được tìm thấy trên codeplex (dlr.codeplex.com), có cần nhiều thứ nữa không? Tất cả các tính năng của dự án DLR này có được đưa vào .NET 4 không? Hoặc có cái gì đó của giá trị còn lại để được tìm thấy trong DLR?

+0

Loại "động" sử dụng DLR bên dưới mui xe. –

+0

động == DLR. Vậy là không. –

Trả lời

2

Nó không hoàn toàn trả lời câu hỏi của bạn nhưng tôi đã rất quan tâm để đọc tin nhắn của Jim Hugunin về việc rời khỏi Microsoft một thời gian trước đây.

Một trong những điều mà ông đã chỉ ra là DLR là trình điều khiển đằng sau nhiều tiến bộ tốt đẹp mà chúng tôi có trong .Net 4.0 mà bây giờ bạn nói là lý do tại sao bạn có thể không cần DLR nữa.

Edit: Liên kết với các Thông tin về - http://hugunin.net/microsoft_farewell.html

Mặt khác, tôi nghĩ rằng hệ thống DynamicSite vẫn là cái gì đó khá có giá trị phải có, trong khi không nhất thiết phải một cái gì đó quan trọng để đưa vào CLR chính nó.

Chỉnh sửa lần 2: đây thực sự là một truy vấn thú vị, tôi vừa xem các tài liệu trên Codeplex. Khi bạn nói và làm rõ, net 4.0. CLR thực hiện loại thứ được sử dụng để làm cho DLR đặc biệt; Đọc tổng quan về DLR, tôi nghĩ rằng về cơ bản ý tưởng là những thứ được triển khai với DLR có lợi thế là truy cập vào các tính năng mới nhanh hơn sau đó chờ đợi một phiên bản mới của Khung.

Điều này có thể là tranh luận vì họ đã không phát hành phiên bản DLR mới trong một thời gian!

Một ưu điểm có thể, nhưng tôi thừa nhận tôi đã không khám phá điều này đúng, đó là AST trong DLR có thêm nhiều tính năng:

Shared AST (Trees Expression) - Đây là một trong những cốt lõi trụ cột của DLR. Chúng tôi đã mở rộng LINQ Expression Trees để bao gồm kiểm soát dòng chảy, nhiệm vụ, vv Chúng tôi cũng gửi các nguồn cho tất cả các biểu hiện Cây v1 và v2 (công cụ mới cho DLR). Biểu thức Tres là một phần của việc giảm thanh để chuyển ngôn ngữ sang .NET và chúng tôi sử dụng chúng trong các giao thức và giao thức DynamicMetaObject.

+0

Đã thêm một bản chỉnh sửa để giải thích câu hỏi của tôi tốt hơn. –

1

Khi trang wiki này (http://en.wikipedia.org/wiki/Dynamic_Language_Runtime) giải thích, DLR được sử dụng với IronPython và IronRuby, vì vậy có, nó vẫn là cần thiết.

Nó sẽ làm cho cuộc sống của bạn dễ dàng hơn nếu bạn có thể sử dụng một ngôn ngữ năng động hơn cho sự phát triển của bạn.

1

DLR trên codeplex là mã nguồn mở, vì vậy sẽ dễ dàng hơn trong việc cải thiện/bổ sung để hỗ trợ các tính năng mà ngôn ngữ của bạn có thể cần.

3

Trong quá trình phát triển DLR, chúng tôi chia thành hai phần - lớp bên trong và lớp ngoài. Lớp bên trong bao gồm bộ nhớ đệm trang web cuộc gọi, cây biểu thức mở rộng và giao thức đối tượng meta. Tất cả điều đó đã được dự định và được thêm vào .NET 4.0.

Lớp ngoài bao gồm các API lưu trữ, trình thông dịch biểu thức, hỗ trợ COM interop, trình phân giải quá tải có thể tùy chỉnh để gọi các phương thức .NET, một trình kết nối mặc định cho hầu hết các hoạt động DLR và nhiều trình trợ giúp khác. Không có điều nào trong số này đã được chuyển với khung công tác .NET nhưng vẫn có thể hữu ích cho bạn. Khi sử dụng điều này trên .NET 4.0, nó dựa vào các API DLR được gửi đi với .NET 4.0.

Lớp bên ngoài cũng được chia thành hai phần - API lưu trữ (Microsoft.Scripting.dll) và mọi thứ khác (Microsoft.Dynamic.dll). Bạn có thể nhắm mục tiêu các API lưu trữ DLR nếu bạn muốn mọi người có thể lưu trữ ngôn ngữ của bạn giống như cách họ lưu trữ IronPython và IronRuby. Và bạn có thể sử dụng Microsoft.Dynamic.dll hoặc chỉ cần kéo các đoạn mã hữu ích từ nó thay vì phát minh lại bánh xe. Trong cả hai trường hợp nếu bạn muốn phiên bản mới nhất, bạn sẽ cần phải kiểm tra các trang web IronPython/IronRuby vì Microsoft không còn tích cực phát triển các thành phần lớp ngoài.

Các vấn đề liên quan