2012-05-07 46 views

Trả lời

6

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.

1

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 notationsymbolic 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.

15

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ữ.

+3

+1 yêu thích nó, không thể súc tích hơn! –

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