2012-06-18 31 views
5

Tôi tự hỏi liệu có bất kỳ lựa chọn thay thế nào cho Scala cố gắng cung cấp một hệ thống và cú pháp kiểu mạnh hơn không. Tôi nhận thức được các lựa chọn thay thế chức năng như Haskell, nhưng có bất kỳ thực sự đẩy bên OO tĩnh của mọi thứ, ví dụ trong các lĩnh vực như vậy, nơi mà Scala thiếu các lớp ảo, đầy đủ thừa kế và cú pháp xây dựng linh hoạt hơn, tĩnh kiểm tra hợp đồng, phụ thuộc vào đường dẫn mạnh mẽ hơn, MyTypes, công cụ sửa đổi bạn bè, nhập khẩu lớp học đầu tiên, hoặc có thể một số công cụ đánh máy bí truyền, tôi thậm chí còn chưa từng nghĩ đến/nghe nói.Các lựa chọn đa mô hình tĩnh OO định hướng tĩnh mạnh mẽ cho Scala

OO và ở mức độ thấp hơn Tĩnh dường như không mang tính thời trang trong những ngày này. Tuy nhiên, nó đánh tôi rằng sức mạnh của các máy tính hiện đại cho phép tạo ra các trình biên dịch tĩnh vượt xa những giấc mơ của các nhà biên dịch trình biên dịch trong những thập kỷ trước.

Tôi đoán là tôi đã không gặp bất kỳ điều gì, không có cách nào khác là tôi có khả năng muốn loại bỏ mã sản xuất trong thời gian sớm. Nhưng ngay cả khi họ vẫn còn rất nhiều ngôn ngữ học thuật, tôi vẫn muốn theo dõi họ và có thể chơi đùa với họ. Tôi đặc biệt tìm kiếm những gì có thể được gọi là lựa chọn thay thế lĩnh vực trái để Scala. Vì vậy, không phải Ceylon hay Kotlin đang cố gắng ưu tiên sự đơn giản trên quyền lực. Eiffel dường như không đi bất cứ nơi nào trong những ngày này. Tôi đã đi qua gBeta và Ceasar nhưng không thể làm việc ra nếu có bất kỳ khu vực mà họ mất đến Scala. Có khả năng nào khác không?

+0

Tôi nghĩ hệ thống kiểu Scala không ai sánh kịp, nhưng vì lợi ích của các lựa chọn thay thế, hãy xem [Ioke] (http://ioke.org/). – opyate

+0

@ sao chép Ah năng động của nó. –

+2

Rất tiếc, tôi đã đọc "đa mô hình" và hào hứng khi cho bạn thấy Ioke :) – opyate

Trả lời

4

Trong một từ, không. Không có lựa chọn thay thế OO phổ biến đến bất cứ nơi nào gần hệ thống kiểu của Scala. Với các tính năng mong muốn của bạn, tôi khuyên bạn nên xem qua C++, D và Go.

Nếu bạn cảm thấy thích mạo hiểm và bạn không hoàn toàn gắn liền với ý tưởng của OO, hãy xem Typed Racket. Coq, Idris và Agda cung cấp các tính năng được đánh máy phụ thuộc khá hấp dẫn. Hoặc chỉ cần chuyển sang các ngôn ngữ FP phổ biến như Haskell, F # và OCaml.

Có lý do cụ thể nào bạn muốn ngôn ngữ OO không? Một lần nữa, Scala có lẽ là tốt như nó được ngay bây giờ nếu bạn muốn có một hệ thống kiểu mát mẻ OO.

+0

Tất cả thời gian của tôi với C# Tôi muốn nhiều kiểu thừa kế và kiểu phụ thuộc đường dẫn, mặc dù tôi không biết tên. Đã tẩy sạch ứng dụng của tôi về các loại tự và bắt đầu sử dụng kim cương MI cổ điển có vẻ khá tốt. Những điều tôi muốn nhất là có thể tạo các lớp mở rộng các kiểu phụ thuộc đường dẫn bên ngoài đường dẫn, theo cách bạn mở rộng một lớp chung mà không đóng trình tạo kiểu và biên dịch thời gian chạy dễ dàng. –

+0

Tôi hiện đang tập trung vào Scala; đã đến từ mô hình lập trình hướng đối tượng và cố gắng nắm bắt mô hình lập trình chức năng. Tôi đánh giá cao câu trả lời của bạn cho câu hỏi của tôi tại http://stackoverflow.com/questions/11162743/haskell-scala-interoperability. Tôi sẵn sàng bỏ lại kiến ​​thức của OO. Scala có thể được thay thế hoàn toàn bằng Haskell cho ERP (Lập kế hoạch nguồn lực doanh nghiệp) như ứng dụng phân phối đa vị trí quy mô lớn không? – Optimight

+0

@Optimight chắc chắn. Bạn có thể muốn xem [Nhóm Haskell công nghiệp] (http://industry.haskell.org/), xem ví dụ về [Haskell trong ngành] (http://www.haskell.org/haskellwiki/Haskell_in_industry), và nói chuyện với mọi người trên kênh [#haskell irc] (http://www.haskell.org/haskellwiki/IRC_channel) để biết chi tiết. –

1

D (cụ thể, D phiên bản 2, còn gọi là D2) là ngôn ngữ chính xác mà bạn đang tìm kiếm.

Có các video trên Youtube giới thiệu D, IDE/plugin như Visual D (plugin cho Visual C++), Mono-D (plugin cho MonoDevelop) và DDT (plugin cho Eclipse).

Các trang web chính tại dlang.org có một tham chiếu đầy đủ thư viện, cú pháp ngôn ngữ, hướng dẫn, diễn đàn dành cho người mới bắt đầu/thảo luận tiên tiến vv

Đối với một giao diện đồ họa, nhìn vào GtkD. Tôi tin rằng bạn cần phải sử dụng trình biên dịch DMD cho điều này, hiện tại.

dsource.org và github có nhiều thư viện/mã bên thứ ba khác, nhưng bạn sẽ thấy rằng thư viện lõi bao gồm tất cả các khái niệm cơ bản, như trình phân tích cú pháp json, trình phân tích cú pháp XML, v.v. bạn cần tích hợp sẵn, như hashmaps, mảng động, được thiết kế theo hợp đồng, mẫu/biểu thức được đánh giá tĩnh, v.v.

Với D2, bạn có thể liên kết trực tiếp với C và C++ và liên kết với mã Python/LUA, v.v. Nó có khả năng như một ngôn ngữ hệ thống (bạn có thể viết một hệ điều hành với nó, nếu bạn muốn), nhưng cũng hoạt động tốt như một ngôn ngữ ứng dụng hiện đại, cao cấp, thanh lịch, nhanh chóng với sự hỗ trợ cho những thứ như mã an toàn, đồng thời.

Tất cả trong tất cả, nó rất ấn tượng.Buồn rằng nó không phổ biến hơn, bởi vì Scala là một bộ nhớ chậm bằng cách so sánh;)

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