2012-06-18 9 views
5

Zastanawiałam się, czy są jakieś alternatywy dla Scala, które próbują oferować bardziej wydajny system typu i składnię. Jestem świadomy funkcjonalnych alternatyw, takich jak Haskell, ale czy są jakieś rzeczy, które naprawdę naciskają na statyczną stronę OO rzeczy, na przykład w takich obszarach, gdzie brakuje Scali, takich jak klasy wirtualne, pełne dziedziczenie i bardziej elastyczna składnia konstruktorów, statyczne sprawdzanie kontraktów, silniejsza zależność od ścieżki, MyTypes, modyfikator znajomości, import pierwszej klasy, a może jakieś ezoteryczne narzędzie do pisania, o którym nawet nie pomyślałem/nie słyszałem.Potężny OO statyczny zorientowane Multi alternatywy paradygmat Scala

OO oraz w mniejszym stopniu Static nie wydają się być modne w dzisiejszych czasach. Jednak wydaje mi się, że moc nowoczesnych komputerów umożliwia tworzenie kompilatorów statycznych, które wykraczają poza sny twórców kompilatorów w poprzednich dekadach.

Przypuszczam, jak nie natknąć się niczego, nie ma alternatywy, że jestem prawdopodobnie chcą wybić kod produkcyjny w każdej chwili wkrótce. Ale nawet jeśli nadal są bardzo językami akademickimi, nadal chciałbym ich obserwować i być może bawić się z nimi. Szczególnie szukam tego, co można by nazwać lewymi polami alternatywy dla Scali. Więc nie Ceylon czy Kotlin, którzy próbują nadać priorytet prostocie władzy. W dzisiejszych czasach Eiffel chyba nigdzie się nie wybiera. Natknąłem się na gBeta i Ceasar, ale nie udało mi się ustalić, czy są jakieś obszary, w których przegrywają z Scalą. Czy są jakieś inne możliwości?

+0

Myślę, że system Scala jest nie ma sobie równych, ale w interesie wypróbowania alternatyw, spójrz na [Ioke] (http://ioke.org/). – opyate

+0

@opiate Ah jego dynamika. –

+2

Ups, przeczytałem "multi paradygmat" i byłem podekscytowany pokazaniem ci Ioke :) – opyate

Odpowiedz

4

Jednym słowem, nie. Nie ma popularnych alternatyw OO, które pochodzą gdziekolwiek w pobliżu systemu typu Scala. Biorąc pod uwagę pożądane funkcje, proponuję rzetelne spojrzenie na C++, D i Go.

Jeśli czujesz się na siłach i nie są całkowicie przywiązany do idei oo, następnie przyjrzeć Typed Racket. Coq, Idris i Agda oferują zależnie od siebie typowo ciekawe rzeczy, które są dość intrygujące. Lub po prostu przejdź do popularnych języków FP, takich jak Haskell, F # i OCaml.

Czy jest jakiś szczególny powód, dla którego chcesz języka OO? Ponownie, Scala jest prawdopodobnie tak dobra jak teraz, jeśli chcesz mieć fajny system typu: i OO.

+0

Cały mój czas z C# Chciałem wielu typów dziedziczenia i fantazyjnie zależne od ścieżki, chociaż nie znałem nazwy. Po wyczyszczeniu mojej aplikacji i zaczęciu używania klasycznych diamentów MI wydaje się całkiem nieźle. Rzeczy, które najbardziej lubię, to móc tworzyć klasy, które rozszerzają typy zależne od ścieżek poza ścieżką, w taki sposób, w jaki rozszerzasz klasę ogólną bez zamykania konstruktora typu i prostej kompilacji środowiska wykonawczego. –

+0

Obecnie koncentruję się na Scali; pochodzą z Paradygmatu programowania obiektowego i próbują zrozumieć paradygmat programowania funkcjonalnego. Doceniam twoją odpowiedź na moje pytanie na http://stackoverflow.com/questions/11162743/haskell-scala-interoperability. Jestem gotów zostawić wiedzę OO. Czy Scala może zostać całkowicie zastąpiona przez Haskell dla ERP (Enterprise Resource Planning), podobnie jak wielkoskalowa aplikacja rozproszona? – Optimight

+0

@ Optymalna pewność. Możesz zajrzeć do [Industrial Haskell Group] (http://industry.haskell.org/), zobacz przykłady [Haskell w branży] (http://www.haskell.org/haskellwiki/Haskell_in_industry), oraz porozmawiaj z ludźmi na kanale [#haskell irc] (http://www.haskell.org/haskellwiki/IRC_channel), aby poznać szczegóły. –

1

D (konkretnie D wersja 2, alias D2) jest dokładnie tym językiem, którego szukasz.

Istnieją filmy na Youtube przedstawiające D, IDE/wtyczki, takie jak Visual D (wtyczka do Visual C++), Mono-D (wtyczka do MonoDevelop) i DDT (wtyczka do Eclipse).

Główna strona w dlang.org ma pełne odniesienie biblioteka, składni języka, tutoriale, fora dla początkujących/zaawansowanych dyskusjach itp

Dla GUI, spojrzeć na GtkD. Uważam, że do tego celu należy teraz użyć kompilatora DMD.

dsource.org i github mają wiele innych bibliotek/kodów innych firm, ale przekonasz się, że biblioteka rdzeniowa zawiera wszystkie podstawowe informacje, takie jak parsery json, parsery XML itp., A język podstawowy ma wiele rzeczy potrzebujesz wbudowanych, takich jak hashmapy, dynamiczne tablice, projektowanie przez umowy, statycznie oceniane szablony/wyrażenia, itp.

Z D2 możesz połączyć bezpośrednio do C i C++ i powiązać z kodem Python/LUA itp. Jest zdolny jako język systemu (możesz napisać na nim system operacyjny, jeśli chcesz), ale działa również jako nowoczesny, wysoki, elegancki, szybki język aplikacji z obsługą takich rzeczy, jak współbieżny, bezpieczny kod.

Podsumowując, jest to imponujące.Smutne, że nie jest bardziej popularny, biorąc pod uwagę, że Scala jest powolnym świajem pamięci przez porównanie;)