Scala - warto?

Na RuPy 2009 James Williams robił prezentację o Griffonie – gość zawodowo pisze w Groovy.
Co do Clojure, to Drogomir pisał o swoich kolegach ze Strobe.

Bez złośliwości, ale pracując na uczelni chyba generalnie znasz niewiele osób programujących zawodowo w nowoczesnych językach :wink:
(w każdym razie ekstrapoluję z państwowych uczelni warszawskich, gdzie taka java się umocowała dopiero w ostatnich latach)

PS. Blogaska Biniego mam w RSSach od kiedy się dowiedziałem o JRuby (chociaż tak dokładnie to chyba kiedy ogłosił rozpoczęcie prac nad Ioke). Post fajny, ale nic nie wspomina o kosztach dodawanych przez wielojęzyczność.

Na RuPy 2009 James Williams robił prezentację o Griffonie – gość zawodowo pisze w Groovy.
Co do Clojure, to Drogomir pisał o swoich kolegach ze Strobe.

Bez złośliwości, ale pracując na uczelni chyba generalnie znasz niewiele osób programujących zawodowo w nowoczesnych językach :wink:
(w każdym razie ekstrapoluję z państwowych uczelni warszawskich, gdzie taka java się umocowała dopiero w ostatnich latach)[/quote]
Na AGH Java jest od co najmniej 10 lat. A propos tego, że nie znam ludzi, którzy zawodowo programują :slight_smile: Na 4 roku informatyki prawie wszyscy studenci pracują zawodowo, poza tym większość osób, z którymi studiowałem również pracuje zawodowo w korporacjach. Spora część pracowników uczelni również pracuje (często mają swoje firmy programistyczne). Dlatego ten argument jest zupełnie bez sensu.

A co do tego, że są firmy, w których programuje się w Groovy czy w Clojure - różnica jest taka, że podajesz przykłady z zupełnie innej półki - to tak samo jak bym powiedział, że znam ludzi, którzy w jakiejś firmie programują w SubL (język implementacji Cyc-a). To, że na jakiejś konferencji można spotkać kogoś kto ma taką firmę albo zna kogoś kto ma taką firmę, jest zupełnie innym argumentem niż to, że jakiś przypadkowy student jest zatrudniony w Polsce w “przypadkowej” korporacji i dla tej korporacji programuje w Scali i to ta korporacja wymaga tego od niego.

Ale to trochę dyskusja “firma włacza w ciebie język” versus “ty wtłaczasz język we firmę”. Znaczy nie jest mi szkoda kogoś, kto po studiach idzie do pracy w polskim korpo, a potem biedny bo zna technologie o kilka lat w tyle za resztą świata.

Na mitycznym zachodzie (głównie USA) jest multum ofert pracy dla programistów Groovy. Patrzenie na polski zaścianek może co najwyżej zniechęcić do nauki czegokolwiek ponad trio zabijające pasję, czyli java, c#, php.

A pracowania w “przypadkowej korporacji w Polsce” to nikomu nie życzę :wink:

Co do Grooviego, to mój znajomy miał go używać w dużej korpo do dużego projektu.

Clojure nie jest według mnie językiem, który ma o wiele mniejsze szanse, aby wejść do mainstreamu. Uważam, że to świetny język, ale ‘inny’ niż java i wymagający o wiele więcej wysiłku aby go opanować. Jest to po prostu język dla geeków.

Natomiast w Scali można bardzo szybko się odnaleźć przechodząc z javy - upraszczając, jest to po prostu inna składnia. Dlatego pewnie firmy będą przechodzić właśnie na Scalę. Zresztą, zobaczymy za parę lat :slight_smile:

Osobiście, jak mi tylko czas pozwoli chcę opanować Scalę i Clojure, a potem zobaczymy.

Blogger please. Programowanie generalnie jest dla geeków. Chyba że hipsterzy przesiadujący w starbucksie zaczęli zamiast w moleskinach pisać w rubym i coffeescripcie?

http://stackoverflow.com/questions/1314732/scala-vs-groovy-vs-clojure - pierwsza odpowiedź. Zgadzam się przed wszystkim z tym, że Scala może zastąpić Javę w korporacjach. Groovy, JRuby, Clojure, etc. - nie. Ale tak jak pisze Slawosz - to jest o tyle fajna dyskusja, że za parę lat okaże się kto miał rację :stuck_out_tongue:

Znaczy, ja bym osobiście bardzo chciał żeby to Scala została de facto językiem JVM. Serio.

Co nie zmienia faktu że w temacie tego wyparcia javy przez scalę:

[quote=Tomash]To samo Groovy i Clojure.
(ciach)
EDIT: i JRuby, i Ioee, i pewnie jeszcze kilka(naście?) innych ;)[/quote]
Dopisywałeś coś w JRuby do projektu Javovego? :> Nie wiem jak jest teraz, ale jeszcze niecały rok temu próbowałem to zrobić i to jest możliwe, w niektórych przypadkach może się przydać (ja używałem do parsera pisanego na uczelnię), ale produkcyjnie? Nie wiem czy zdecydowałbym się na takie rozwiązanie. Różnica w tych dwóch językach, ich specyfika, sprawia, że pozwoliłem sobie jedynie na wykonanie skryptu w Javie, a nie na korzystanie z klasy JRubego. Nie pamiętam dokładnie na czym utknąłem, ale już mapowanie typów było w niektórych miejscach problematyczne.

Nie wiem jak jest w Groovym, Clojure i całą resztą, ale zakładam, że to może tylko brzmieć tak ładnie. Ktoś ma jakieś doświadczenia?

Stawiam, że Scala z Javą się lubią dużo bardziej niż wymienione języki, a już na pewno JRuby.

Tomash, wspominałeś o Compojure. Probowałeś napisać w Clojure jakiś niebanalny kod webowy? Jak Compojure ma się na tle Rails3 jeśli chodzi o możliwości? Np. na ile ma zaawansowany routing, jak tam pisać testy, jest jakaś biblioteka BDD do Clojure? Jak z ORM w Compojure? Jak rozwiązuje kwestę cache’a, kontrolowania MIME i odpowiedzi, budowania XML i Feeds (Scala ma wgrzaną obsługę XML’a). Czy można tworzyć komponenty w stylu View First tak jak ma Lift? A może to bardziej MVC? Sam Clojure jest elegancki i dynamiczny, ale mam wrażenie że nie ma za bardzo kompletnego rozwiązania do webu. Inna sprawa, że wygląda zupełnie inaczej, no ale to w końcu Lisp.

Rails ma słabą dokumentację na stronie, ale jest dużo książek, materiałów wideo itp. Django ma elegancko wszystko w jednym miejscu. Lift ma słabą, niekompletną dokumentacje (dwie rozgrzebane książki online) ale Compojure wydaje się nie mieć praktycznie żadnej dokumentacji!

Update: na Stack Overflow trochę wyjaśniają. Clojure został rozdzielony na niezależne moduły. Jest tam też lista innych frameworków… ale nic specjalnego i prawie żadnej dokumentacji. W sumie trzeba sobie samemu wszystko poskładać i chyba analizować kod źródłowy bo z dokumentacją kiepsko. JRuby on Rail w Torquebox wydaje się łatwiejszym i wcale nie takim słabym rozwiązaniem.

A w czymkolwiek poza Liftem się da? :wink:
No może ewentualnie w Django - URLconf który renderuje template a w templacie używamy templatetagów. Ale i tak nie będzie to tak eleganckie (no dobra, może nie eleganckie, bo jak dla mnie w tych Liftowych Snippetach jest taki burdel, że szkoda gadać - jakieś wstawki html-owe itp.) jak w Lifcie.

Poza tym przecież brak dobrego frameworka webowego nie dyskwalifikuje Clojure jako dobrego języka :slight_smile:

[quote=sarniak]Dopisywałeś coś w JRuby do projektu Javovego? :> (…)
Nie wiem jak jest w Groovym, Clojure i całą resztą, ale zakładam, że to może tylko brzmieć tak ładnie. Ktoś ma jakieś doświadczenia?[/quote]
W Groovy on Grails zrobiłem jeden projekt na uczelni, do eksternistycznego zaliczenia laboratorium z Javy EE. Grails to generalnie framework webowy oparty o Springa (a ichni ORM oparty o Hibernate), więc jest pełna integracja z istniejącym sporym kodem javowym. Oraz w razie błędów stos wywołań na trzy ekrany :>

Co do ładowania Groovy w istniejący projekt javowy. Oskryptowałem (w sensie najwyższy poziom sterowania: przemiatanie parametrami i agregacja wyników symulacji) w Groovy kod mojej pracy dyplomowej, która jest w Javie. Bardzo sobie chwalę, ale może też po części dlatego że dość szybko widać co z Javy przekłada się na co w Groovy – i odwrotnie (to jest zresztą przyczyną kilku głupich ograniczeń leksykalnych Groovy’ego).

W Scali i Clojure jak dotąd tylko zabawy, nie mam doświadczenia w integracji z istniejącymi projektami Javowymi.

Tylko nie rozumiem Jarka, który na informację “jest Compojure, taki mikroframework - odpowiednik Sinatry” zaczął toto porównywać do Railsów. Słaby troll jest słaby, a na dodatek nie umie czytać ze zrozumieniem.

Blogger please. Programowanie generalnie jest dla geeków. Chyba że hipsterzy przesiadujący w starbucksie zaczęli zamiast w moleskinach pisać w rubym i coffeescripcie?[/quote]
Programowanie dla geeków? Programowanie? Um… No ja tu widze sporo miejsca na kolejny flame :smiley:

BTW Tak mi się przypomniało… “So you write code in TextMate on your MacBook Pro in a Starbucks; you aren’t a fucking rock star.”

Akurat mnie interesuje na ile Clojure by się sprawdził pod w tej dziedzinie. A dobry to jest też Haskell.

naści http://www.haskell.org/haskellwiki/Web/Frameworks :smiley:

Railsy na to co mają dzisiaj pracowały latami, Compojure to chyba w miarę młody projekt. Poza tym tak jak mówił Tomash - to jest raczej odpowiednik Sinatry, nie Railsów.

Rails od wersji 3 jest jest mocno zmodularyzowany i poszczególne jego częście mogą być wymieniane, lub używane niezależnie. Sinatra nie jest zatem już taka atrakcyjna jak wcześniej. Poza tym Sinatra raczej nie nadaje do bardziej złożonych serwisów (nie do tego ją stworzono) Czy to znaczy, że w Clojure nie można stworzyć czegoś bardziej skomplikowanego, bo nie jest specjalnie wyposażony i trzeba wszystko składać z podejrzanej jakości bibliotek rozsianych po githubie? Do tego dokumentacja Compojure ma w stanie embronialnym. Inne pochodne Compojure, jak Noir (który ponoć inspirowany był Django i Rails) mają to samo. Może Compojure to “fajny framework” jak to napisał Tomash ale bardziej w teorii niż w praktyce. Choć chciałbym się tu mylić.

To wszystko co napisałeś (poza wzorowaniem na Sinatrze) spowodowane jest tym, że:

Na upartego można powiedzieć, że i Scala (poza Liftem, który jest nietypowy i nie każdemu podpasuje) nie ma dobrego frameworka webowego. Play wywala się przy generowaniu projektu - tworzy application.scala w katalogu /app a nie /controllers przez co chrzanią się namespace’y, tak przynajmniej było gdy go próbowałem (całkiem niedawno). Reszta to też takie a’la Sinatrowe twory.

Nie oczekuj, że 3-4 letni język (okej, zbudowany na ponad 15-letnich “fundamentach”) będzie miał tak dużo świetnych, rozbudowanych bibliotek co Ruby. Ciekawe jak wyglądała kwestia frameworków webowych gdy Ruby miał 4 lata :wink:

Ruby (1995) - Ruby on Rails (2004)
Scala (2003) - Lift (2009)

Clojure - 2007

:smiley:

[quote=zlw]Nie oczekuj, że 3-4 letni język (okej, zbudowany na ponad 15-letnich “fundamentach”) będzie miał tak dużo świetnych, rozbudowanych bibliotek co Ruby. Ciekawe jak wyglądała kwestia frameworków webowych gdy Ruby miał 4 lata :wink:

Clojure - 2007

:D[/quote]
Tam chyba zrobiłeś czeski błąd - powinno być 51 a nie 15 :stuck_out_tongue:

Sorry, Jarek, ale po trollingu jaki uprawiałeś na wszelkich możliwych kanałach (zwłaszcza w komciach na blogu Yehudy) niespecjalnie jesteś wiarygodny chwaląc Rails 3 czy pokazując je jako wzór.

EDIT: O, nawet trochę pobocznego flejma mieliśmy tutaj na forum :smiley:
http://rubyonrails.pl/forum/viewtopic.php?id=2631&p=1

Nie o to mi chodzi.

Chodzi o utylitarne podejście do nauki. Jeśli masz czas to nie rób tego utylitarnie, tylko dlatego, że możesz się czegoś nauczyć.

[quote=Tomash]Sorry, Jarek, ale po trollingu jaki uprawiałeś na wszelkich możliwych kanałach (zwłaszcza w komciach na blogu Yehudy) niespecjalnie jesteś wiarygodny chwaląc Rails 3 czy pokazując je jako wzór.

EDIT: O, nawet trochę pobocznego flejma mieliśmy tutaj na forum :smiley:
http://rubyonrails.pl/forum/viewtopic.php?id=2631&p=1[/quote]
Wybacz Tomash, ale ale ja widzę więcej kolorów niz czarny i biały. Rails ma swoje dobre i złe strony; poza tym sie rozwija, i cześć wcześniejszej krytyki też może ulec zmianie. Choć co do tego sposobu połączenia się Rails2 z Merbem1 to nadal nie zmieniłem zdania (inna sprawa że to już nie ma znaczenia). Uważam że aktualny Rails 3.1 jest całkiem dobry.