Sự khác nhau giữa tiện ích mở rộng của Thư viện và Ngôn ngữ là gì? Cụ thể là ở Scala.Thư viện và tiện ích mở rộng Ngôn ngữ
Trả lời
này có giá trị cho cả Scala và cho Java, một thư viện có thể được định nghĩa là:
Trong khoa học máy tính, thư viện là một tập hợp các nguồn lực sử dụng để phát triển phần mềm. Chúng có thể bao gồm các mã được viết sẵn và các chương trình con, các lớp, các giá trị hoặc các đặc tả kiểu.
Nó có nghĩa là (Tôi biết, tôi đơn giản hóa rất nhiều) một thư viện là một bộ sưu tập thói quen bạn sẽ sử dụng trong mã của bạn để thực hiện một thuật toán. Chúng tiết kiệm cho bạn để viết cùng một mã một lần nữa và một lần nữa (ví dụ bạn không cần phải reinvent bánh xe mỗi khi bạn phải in một chuỗi để điều khiển).
Một phần mở rộng ngôn ngữ không phải là mã mà bạn sẽ gọi (hoặc sử dụng) trực tiếp từ mã của bạn, nhưng cái gì đó sẽ thay đổi cách bạn viết chương trình của bạn. Nó có thể thay đổi (và thường là nó) cú pháp của chính ngôn ngữ đó và thường nó là một trình cắm thêm cho trình biên dịch. Nhiều tính năng được thêm vào ngôn ngữ Java là phần mở rộng (ví dụ như Generics).
Ví dụ Session-Scala là một phần mở rộng làm bằng cả hai:
- một thư viện để quản lý lập trình song song (mã bạn có thể gọi trực tiếp từ mã của bạn).
- phần mở rộng ngôn ngữ: để làm cho mã bạn viết rõ ràng hơn (nó đôi khi được gọi là cú pháp), thay đổi cú pháp của ngôn ngữ để sử dụng chức năng thư viện của nó dễ dàng hơn (tôi có nên nói đẹp?)
Ví dụ, hãy xem this page.
Điều đó nói rằng, thường với Scala một phần mở rộng ngôn ngữ là không thực sự cần thiết (ngay cả khi nó rất dễ dàng để viết, hơn cho ngôn ngữ NET, ví dụ) vì cú pháp của nó. Điều đầu tiên đến với tâm trí của tôi là các toán tử infix nhưng nói chung tất cả cú pháp của nó cho các lời gọi phương thức làm cho mọi thứ đơn giản để sử dụng nó như là DSL mà không có DSL.
Nếu theo ngôn ngữ mở rộng bạn có nghĩa là một trình biên dịch plugin, sau đó nó có thể kiểm tra hoặc chuyển đổi mã nguồn nhất định thành mã Scala đơn giản khác tại thời gian biên dịch. Tuy nhiên, những người khác sử dụng cùng một mã nguồn gốc cũng phải có trình biên dịch plugin được cài đặt để biên dịch mã.
Một thư viện, mặt khác, trong Scala có thể trông giống như một phần mở rộng ngôn ngữ nhờ sự hỗ trợ của Scala cho infix notation/suffix notation và symbolic methods. Tuy nhiên, không có gì đặc biệt được thực hiện tại thời gian biên dịch, mặc dù tự nhiên bất cứ ai biên dịch và sau đó chạy cùng một mã nguồn sẽ cần bất kỳ thư viện tham chiếu để làm như vậy.
This is the Scala language specification. Nếu bạn có thể viết bằng ngôn ngữ được mô tả bằng đặc điểm kỹ thuật này, thì đó là thư viện . Nếu bạn thực hiện thay đổi đối với ngôn ngữ được mô tả bằng tài liệu này, thì không thể tự viết bằng ngôn ngữ đó, thì đó là một phần mở rộng ngôn ngữ.
+1 yêu thích nó, không thể súc tích hơn! –
- 1. Thư viện MTL yêu cầu những tiện ích mở rộng ngôn ngữ nào?
- 2. Tiện ích mở rộng PSake?
- 3. Cách xác định thư mục của tiện ích mở rộng
- 4. Mở rộng ngôn ngữ C#?
- 5. Các thư viện và tiện ích Java cần thiết cho người dùng ngôn ngữ động trở về là gì?
- 6. Thư viện/tiện ích/tiện ích mảng javascript tốt nhất là gì?
- 7. Tiện ích mở rộng của Chrome + Dart
- 8. Tiện ích mở rộng trình duyệt Android
- 9. Tiện ích mở rộng Intellisense tùy chỉnh
- 10. Tải tiện ích mở rộng hình ảnh
- 11. .tiện ích mở rộng gốc của mạng cho node.js
- 12. Tiện ích mở rộng của Chrome: biểu tượng tiện ích mở rộng onclick, mở popup.html trong tab mới
- 13. Tiện ích mở rộng của Python và OpenMP C
- 14. Tự động tải jQuery và các tiện ích mở rộng
- 15. powershell - trích xuất tên tệp và tiện ích mở rộng
- 16. Tiện ích mở rộng Rx: Parallel.ForEach ở đâu?
- 17. API tiện ích/tiện ích mở rộng Gmail - cách thêm nút vào thanh công cụ soạn thư?
- 18. Tiện ích mở rộng Safari - Có quá nhiều tập lệnh được tiêm trả lời thư
- 19. Làm cách nào để tải một tệp ngôn ngữ cho tiện ích mở rộng Joomla của bên thứ ba?
- 20. grep nhiều tiện ích mở rộng hiện tại và thư mục con
- 21. Tiện ích mở rộng của Chrome + Devise + Rails App - Đặt yêu cầu được xác thực từ tiện ích mở rộng?
- 22. Thư viện bản dịch ngôn ngữ Java
- 23. Tiện ích mở rộng của Chrome - Hình ảnh của tiện ích mở rộng trên Trang cài đặt
- 24. Chuyển đổi Tiện ích mở rộng của Google Chrome sang tiện ích mở rộng của Firefox hoặc Safari
- 25. giải nén tiện ích mở rộng cụ thể chỉ
- 26. Python: os.listdir thay thế/một số tiện ích mở rộng
- 27. Cách bảo vệ tiện ích mở rộng chrome
- 28. Flash Builder 4.6 Lỗi tiện ích mở rộng gốc
- 29. cửa sổ bật lên ở menu ngữ cảnh của tiện ích mở rộng chrome
- 30. Thư viện tiện ích bổ sung Visual Studio?
Ý của bạn là nói gì * tiện ích mở rộng ngôn ngữ *? –