Scala jest rozliczany jako język skalowalny, funkcja nawet zawarta w jego nazwie :
Nazwa Scala to skrót od „skalowalnego” i „języka”, co oznacza, że ma on rosnąć wraz z wymaganiami użytkowników.
Co oznacza „skalowalny” w kontekście Scali? Co czyni Scalę bardziej skalowalnym niż, powiedzmy, Java?
scala
scalability
prasonscala
źródło
źródło
Odpowiedzi:
Kiedy Martin Odersky mówi o scali jako skalowalnym wyborze języka, chodzi mu o to, że sam język jest odpowiedni dla:
Z pewnością nie odnosi się do skalowalności z punktu widzenia wydajności!
Fakt, że może on twierdzić, że Scala jest tak odpowiedni do szybkiego tworzenia skryptów jak i do wdrażania na dużą skalę w przedsiębiorstwie, jest mniej więcej następujący:
Skrypty
Scala doskonale nadaje się do tworzenia skryptów, ponieważ wnioskowanie o typach i funkcjonalny styl sprawiają, że jest ona zwięzła i świetnie nadaje się do krojenia i krojenia kolekcji itp.
Aplikacje
Scala doskonale nadaje się do pisania aplikacji, ponieważ jest to język sprawdzany statycznie z kilkoma świetnymi funkcjami do pracy zarówno w stylu funkcjonalnym, jak i imperatywnym. Scala jest kompatybilny z Javą, dzięki czemu możesz wykorzystać ogromny ekosystem bibliotek.
Wdrożenie w przedsiębiorstwie
Scala kompiluje się do kodu bajtowego i działa na wirtualnej maszynie Java, stabilnym systemie o dużej wydajności, w porównaniu do (tak zwanych) języków dynamicznie typowanych (tj. Nietypowych). Ponownie fakt, że jest on typowany statycznie, oznacza, że refaktoryzacja jest znacznie łatwiejsza w przypadku dużych baz kodowych.
źródło
Odersky mówi (Slajd 11, http://www.slideshare.net/rawwell/scalaliftoff2009pdf ):
Oznacza to, że skalowalne oznacza elastyczność i ekspresję. Możesz tworzyć własne struktury kontrolne. Np. Ramy aktorów to biblioteka, ale wygląda na to, że używa funkcji językowych.
Oznacza to, że Scala skaluje się zgodnie z potrzebną abstrakcją, niekoniecznie w kategoriach „odpowiadania na 1 000 000 żądań na sekundę” (ale Scala też jest tutaj silna).
źródło
Ograniczeniem skalowalności Javy w praktyce nie jest JVM, ale trudność w pisaniu poprawnego kodu współbieżnego. Scala ułatwia to dzięki obsłudze programowania funkcjonalnego i modelu aktora.
Java może być bardzo skalowalna, gdy współbieżność jest łatwa, na przykład na serwerach WWW (każde żądanie jest prawie całkowicie niezależne). Ale jeśli chodzi o paralelizację pojedynczego, długofalowego zadania, może być prawdziwą walką o prawidłowe wykonanie zadania.
źródło
Scala oznacza skalowalny język , nie ma to nic wspólnego z charakterystyką wydajności. Lepsze wytłumaczenie można znaleźć tutaj: http://www.artima.com/scalazine/articles/scalable-language.html
źródło
Nie jest to konieczne, aby sam język był bardziej skalowalny niż Java, ponieważ mówisz, że oba języki mogą generować ten sam kod bajtowy.
Ale model aktora i styl programowania funkcjonalnego mogą zwiększyć skalowalność (w skrócie - upraszczając prawidłowe programowanie współbieżności i zmniejszając potrzeby synchronizacji).
Aby uzyskać lepszy wgląd, spójrz na model aktora i porównaj go z tradycyjną wielowątkową aplikacją Java:
Możesz nawet użyć frameworka Akka do stworzenia wysoce skalowalnej aplikacji Java bez kodowania w Scali:
źródło