2010-11-09 21 views

Trả lời

7

số Nếu bạn nhìn vào trang "khác biệt đáng chú ý" (sự khác nhau giữa Java và Gosu), bạn sẽ thấy rất nhiều thứ mà như C#, nhưng cũng có những thứ mà không trong C# như thế như trường hợp-insensitivity và làm cho dấu chấm phẩy tùy chọn. Ngoài ra còn có những điều mà chắc chắn không được đề cập nhưng đó là một phần của C#:

  • kiểu giá trị Tuỳ chỉnh
  • điều hành quá tải
  • LINQ
  • động gõ nơi cần

Tôi nghĩ sẽ là một sai lầm khi coi Gosu là "C# cho JVM" chứ không phải là "một ngôn ngữ JVM kết hợp các bit của Java, bit của C# và một số bit từ các ngôn ngữ khác nữa".

+1

Quá tệ, tôi thích C# nhưng cần phải lập trình trên JVM. Cảm ơn. – ripper234

+2

@ ripper234: Tại sao không thử Scala? – missingfaktor

19

Chúng tôi đã không xây dựng Gosu thành một ngôn ngữ hoặc ngôn ngữ khác cho JVM. Thay vào đó, chúng tôi đã xây dựng Gosu thành một ngôn ngữ hữu ích hữu ích cho JVM. Ngoài ra, chúng tôi nhận thấy rằng Gosu cần phải quen thuộc với vô số những lập trình viên hiện có, những người cảm thấy thoải mái nhất với mô hình bắt buộc, hướng đối tượng. Để đạt được điều đó, chúng tôi mượn rất nhiều từ một số ngôn ngữ, ví dụ: Java, C#, EcmaScript, Ruby và một số ngôn ngữ khác. Kết quả, chúng tôi nghĩ, là một ngôn ngữ được định vị duy nhất trên JVM.

Điều hoàn toàn độc đáo về Gosu, tuy nhiên, là loại hệ thống mở.

Hệ thống loại của Gosu bao gồm cấu hình số trình tải loại. Trách nhiệm chính của trình tải loại là giải quyết tên kiểu trong miền của nó và trả về việc triển khai giao diện IType của Gosu. Đây là điều độc đáo nhất về Gosu - hệ thống kiểu của nó là mở cho các miền khác để tham gia với đại diện hạng nhất. Tôi thường xuyên sử dụng thuật ngữ, DST (Loại tên miền cụ thể), để vượt qua ý tưởng. Ví dụ, Gosu không phân biệt đối xử giữa một lớp Gosu một lớp Java hoặc loại XML hoặc những gì có bạn; tất cả chúng đều chỉ là kiểu trình biên dịch của Gosu. Hãy xem DynamicType example trong phần tải xuống để có cái nhìn thoáng qua về sức mạnh và bề rộng mà hệ thống kiểu mở cung cấp. Về cơ bản, ví dụ này chứng minh rằng các kiểu động của C# khi có yêu cầu có thể chỉ đơn giản là một miền trình nạp kiểu mới trong Gosu. Hoặc kiểm tra khung công tác Ronin để xem cách dễ dàng các miền web và cơ sở dữ liệu có thể ánh xạ liền mạch với Gosu.

Điều quan trọng là phải hiểu rằng không phải tất cả các tên miền của trình nạp loại trong Gosu đều được yêu cầu để tạo ra bytecode. Những người thực hiện một giao diện để nhận được ở lớp Java tương ứng. Những người không cung cấp trình xử lý cuộc gọi và người truy cập thuộc tính để đánh giá phản hồi MethodInfo và PropertyInfo tương ứng. Lưu ý tất cả các loại cung cấp TypeInfo, xem IType.getTypeInfo(). Ví dụ, trình phân tích cú pháp hoạt động dựa vào các kiểu trừu tượng TypeInfo, MethodInfo, vv như là một phương tiện cho một sân chơi bình đẳng giữa các loại khác nhau. Tuy nhiên, trong thời gian chạy, trừ khi một kiểu cung cấp một lớp bytecode Java, MethodInfos và PropertyInfos cũng chịu trách nhiệm xử lý các cuộc gọi.

+0

Tôi đã xem tài liệu tham khảo về Gosu như một ngôn ngữ được sử dụng cho trò chơi; là Gosu giống như được sử dụng bởi ngành công nghiệp bảo hiểm, hoặc không có kết nối? –

+1

Không, tham chiếu "Gosu" trong các chủ đề trò chơi không liên quan gì đến ngôn ngữ lập trình Gosu. –

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