Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Gdy znudzi ci się PHP poznaj Scalę
Forum PHP.pl > Inne > Hydepark
Luke_Star
Zapewne wielu z nas miało swego rodzaju kryzys przy PHPowaniu, gdy patrząc na kolejną linijkę kodu rozpoczynającego sie od <?php mamy ochotę się postrzelić. To chyba swego rodzaju kryzys wieku średniego, gdy człowiek zauważa że PHP nie jest już taki łał, że jest suchy, że w sumie nadaje się tylko na web'a, nieraz otoczenie pracownicze (programiści Javy) patrzą na nas z wyższością bo niby programujemy w języku wannabe programmers.

Osobiście próbowałem podejść do Javy jako języka dla przyjemności, ale nie przyjęło mi się to za dobrze, to w sumie prosty język ale żeby coś napisać fajnego trzeba przejść prze prawdziwą dżunglę. Na dodatek otoczenie super mega wypas programistów Javy raczej nie sprzyja chęci robienia tego co oni, toteż szukałem dalej. Pomyślałem nad dziadkiem C, w którym się zakochałem, ale który za często nie wybacza, a prostych programów w tym się pisać za szybko nie da (każda biblioteka jest napisana przez kogoś z własnym pomysłem, przez co przejście przez zwykłe parsowanie XMLa bywa czasem piekłem).

Trzeba więc było iść dalej, na mojej drodze pojawił się Python i Ruby, języki IMHO fajne, ale strasznie mnie odstraszające swoim tabo'wym zapisem, na dodatek jakoś nie widziałem w nich tego czegoś. Składnia ogólnie przyjazna, ale społeczność jakoś mi mniej odpowiada, czułem jak gdyby wszyscy wołali "patrzcie piszę w pythonie, jestem super", inna sprawa że wydajność tych języków jest dla mnie dość mała wg mnie (nie po to pisałem Exty w C dla PHPa żeby przechodzić na nowy wolny język).

Innymi słowy dalej stałem w miejscu.

Pewnego dnia łażąc po necie w trakcie służbowej kawki natknąłem się na opis języka Scala, oczywiście rozbawiony zadałem sobie pytanie po cholerę ktoś pisze o takich historycznych językach przecież to ta sama grupa co Ada, Smaltalk, Lisp, Ocaml czy Scheme.

To był największy błąd merytoryczny w moim życiu smile.gif

Okazało się że Scala to jeden z najnowocześniejszych i obecnie najprężniej rozwijających się języków (w odniesieniu do historycznego wzrostu programistów Scali).
Na dodatek stworzony w 2006 roku! Co sprawia że należy do najnowszych!
Ponieważ jest to język funkcyjny a nie imperatywny pierwsza próba ognia bywa cieżka.. ale gdy zobaczyłem semantykę tego kodu... poczułem że znalazłem swoje Shangri-La.

Kod
object HelloWorld2 {
  def main(args:Array[String]) = {
    var greeting = ""
    args.foreach(arg => greeting += (arg + " "))
    if (args.length > 0) greeting = greeting.substring(0, greeting.length - 1)

    println(greeting)
  }
}


Nie muszę mówić że nie jest to język dynamicznie typowany - NA SZCZĘŚCIE! Szlag człowieka trafia jak koderzy nie wiedza nawet co będzie w tej zmiennej w PHPie, a jeśli ktoś nie wie czym jest String, Float czy Nadbudowane na nich typy to niech wraca do szkoły, albo zostawi programowanie w spokoju.

Jest do tego nawet Framework Web + oczywiście wszystko co ma java - a dokładniej jej biblioteki a nawet język, bo drodzy państwo jest to dialekt dla JVM (wkrótce dla .NET też).
Nazywam ten język mniej upierdliwą javą, która jest mądrzejsza, bezpieczniejsza (zbudowana została mniej wiecej w tym celu) i sprytniejsza, o SCALowalności nie wspominam smile.gif bo ma to w nazwie.

Naprawdę polecam, co do użytkowania tego języka prze jakikolwiek portal to polecam poczytać o rozwiązaniu problemów wydajnościowych Twittera.
Byłbym naprawdę zachwycony gdyby Polska stała się Bastionem dla tego języka, albo przynajmniej siedzibą dobrych samurajów smile.gif

Pomocne Linki:

http://www.scala-lang.org/
http://www.codecommit.com/blog/scala/scala...refugees-part-1
wookieb
Stary skąd ty ten tekst skopiowałeś? Bo dla mnie wygląda to na istny spam.
Tym bardziej potwierdza to żałosny trick marketingowy
Cytat
Na dodatek stworzony w 2006 roku! Co sprawia że należy do najnowszych!

Został stworzony w 2001 roku http://www.scala-lang.org/node/239 w 2004 upubliczniony
I kolejny
Cytat
o SCALowalności nie wspominam smile.gif bo ma to w nazwie.

SnoopDog też ma w nazwie psa a tak słodki nie jest.
Luke_Star
Wersja obecna czyli 2.x została wydana w 2006 roku, a to zupełnie inna wersja od 1.x

Cytat(wookieb @ 2.04.2010, 11:11:08 ) *
Stary skąd ty ten tekst skopiowałeś? Bo dla mnie wygląda to na istny spam.
Tym bardziej potwierdza to żałosny trick marketingowy


Taa uważaj, za chwile zrobie chwyt matetingowy dla C tongue.gif albo dla Fortrana


Cytat(wookieb @ 2.04.2010, 11:11:08 ) *
SnoopDog też ma w nazwie psa a tak słodki nie jest.


Jednym z celów utworzenia tego języka jest właśnie skalowalnośc, dlatego tez nadano mu taka nazwe, to coś jak z Assembly Language
darko
Jak dla mnie, to kolejna siszarpowata nakładka na javę.
Luke_Star
darko ale gdzie ty tam widzisz chociażby naleciałość Javy czy C# to jezyk funkcjonalny i ciężko nazwać to nakładką bo takim tokiem rozumowania sama Java jest nakładką na Jave bo działa na tej samej zasadzie. Jedyne co łaczy Jave z Scala to JVM, wiec to co najlepsze.
darko
jvm to nie jedyne, co łączy javę ze scalą. Poza tym nie zgodzę się, że python jest wolny lub wolniejszy od rozwiązań opartych o jvm, bo jest szybszy. Dodatkowo jvm sama w sobie jest powolna, ale to koszt przenośności kodu, jaki trzeba ponieść.
mrok
Cytat
(...)nieraz otoczenie pracownicze (programiści Javy) patrzą na nas z wyższością(...)

bo są wyżsi winksmiley.jpg

A poważnie, dzięki za info, ale zrób może jakieś szybkie porównanie, co może być interesującego:
- uperdliwość instalacji 'niezbędnego softu' - wiadomo php potrzebuje bazy, php i jakiegoś serwera, a co ze scala?
- czas nauki i tworzenia aplikacji (powiedzmy ze prostego bloga w zendzie postawisz w pol dnia, w railsach w 6h, a w django w 4)
- coś o community - jak masz problem z php to na php.pl często uda się znaleźć rozwiązanie, czy scala.pl już działa?
- gotowe rozwiązania - 4lata po wydaniu wersji 2x jakieś fora, cmsy, sklepy, wordpresy w scali powinny być już chyba dostępne
marcio
No ostatnio glosno o scali w necie niedawno byl watek na goldenline: http://www.goldenline.pl/forum/jezyki-skryptowe/1562584
Cysiaczek
Są do tego generatory, fw formularzy, walidacji, czy

Są do tego generatory, fw formularzy, walidacji, cache, orm itp? IMO, to jak przyjdą z czymś w rodzaju SF, Zenda, to można w ogóle zerknąć do manuala winksmiley.jpg
Chyba tylko Railsy są jakąś alternatywą hehe, ale i tak już są w tyle biggrin.gif
Poza tym - mi też to wygląda na jakiś spam winksmiley.jpg
nasty
Teraz na wielordzeniowych procesorach, języki funkcyjne są kozackie winksmiley.jpg
Wykrywacz
A jak jesteśmy przy funkcyjnych to nie lepiej wybrać język z 2009 roku ;P np. F#
darko
Cytat(mrok @ 2.04.2010, 14:26:37 ) *
bo są wyżsi winksmiley.jpg

A poważnie, dzięki za info, ale zrób może jakieś szybkie porównanie, co może być interesującego:
- uperdliwość instalacji 'niezbędnego softu' - wiadomo php potrzebuje bazy, php i jakiegoś serwera, a co ze scala?
- czas nauki i tworzenia aplikacji (powiedzmy ze prostego bloga w zendzie postawisz w pol dnia, w railsach w 6h, a w django w 4)
- coś o community - jak masz problem z php to na php.pl często uda się znaleźć rozwiązanie, czy scala.pl już działa?
- gotowe rozwiązania - 4lata po wydaniu wersji 2x jakieś fora, cmsy, sklepy, wordpresy w scali powinny być już chyba dostępne

Jest framework napisany w Scali - lift jest też książka o nim wydana przez Apress - Exploring Lift. Była też wtyczka do Eclipse IDE (ale coś link nie działa), dla Netbeans też jest oraz dla windowsowego IntelliSense (autocompletion). Ogólnie jest 8 książek o Scali, ich lista dostępna jest tutaj. Jest też alternatywny projekt testowania jednostkowego rehersal Ciekawostka: tutaj jest kod interpretera brain fucka napisanego w Scali. Ogólnie coś tam się dzieje z całym projektem pod tytułem Scala.
Theqos
Kolega Luke_Star popadł chyba w chwilową fasynację. Spokojnie, to minie po przeczytaniu pierwszej ksiązki o Scali winksmiley.jpg Zacznijmy od tego, że Scala nie jest językiem (czysto) funkcyjnym tylko wieloparadygmatowym. W szczególności jest w pełni obiektowy (cuda jak wywoływanie metod na liczbach) no i bardzo zachęca do programowania funkcyjnego co bez sporej wiedzy może się skończyć dużo wolniejszym kodem od tego pisanego w Javie. Ogólnie język wydaje się o wiele trudniejszy od takiej Javy czy PHP, szczególnie jak ktoś nie miał języków funkcyjnych w szkole winksmiley.jpg Niby jest statycznie typowany, ale dzięki "mundremu" kompilatorowi zazwyczaj potrafi domyśleć się typu, przez co wygląda jak język dynamicznie typowany. Jednak trzeba sobie wyrobić nawyk gdzie kompilator się domyśli, gdzie nie, a gdzie fajnie byłoby poinformować czytających kod (np. o tym co zwraca funkcja). W ogóle jest dużo dowolności w pisaniu kodu np.
Kod
1.to(10) można zapisać jako 1 to 10

czyli żeby wyświetlić tanie produkty, można napisać np takie coś
Kod
products filter (_.cena < 100) foreach println

Z jednej strony możemy ładnie zmniejszyć kod, dając logikę na pierwszy plan. Z drugiej strony boję się ile stron będą miały coding standards w firmach smile.gif Szczegółnie, że ta skalowalność w Scali odnosi się też do możliwości samodzielnej rozbudowy języka (brakowało wam kiedyś słów kluczowych? snitch.gif). No i tysiące innych rzeczy zaczynając od wbudowanej obsługi XMLa na ułatwieniach w tworzeniu własnych parserów skończywszy.

Co do szybkości/powolności JVM nie będę się wypowiadał, bo przecież PHP, Python czy Ruby jest wielokrotnie wolniejsze od Javy, a i tak odnioszą sukcesy w programowaniu webowym.

Czy to będzie następne C, C++, Java czy C#? Raczej nie, ale może być kolejnym Rubym tongue.gif Obawiam się, że może być trochę za trudny dla klepaczy kodu. Ale z całościową oceną wstrzymam się do skończenia przeze mnie pracy dyplomowej oceniającej wykorzystanie Scali w webdevelopingu. Nawet jeśli ktoś w tym nie będzie pisał to i tak warto sobie o tym języku poczytać w ramach ćwiczenia programistycznego kata tongue.gif

Cytat(Cysiaczek @ 2.04.2010, 15:26:35 ) *
Są do tego generatory, fw formularzy, walidacji, cache, orm itp? IMO, to jak przyjdą z czymś w rodzaju SF, Zenda, to można w ogóle zerknąć do manuala winksmiley.jpg

Można bez problemu korzystać z rzeczy napisanych w Javie. Jest jeden framework, ale narazie nie zrobił na mnie pozytywnego wrażenia, zobaczymy dalej no i szykuje się nowa wersja.
chlebik
W ogole nie wiem skad pomysl, ze Scala moglaby byc jakims "nastepnikiem" dla koderow PHP. Raz, ze jezyk mocno wiszacy na funkcyjnosci (czyli cos odleglego od PHP), a takze uzywajacy JVM plus cala java jako taka. To juz rownie dobrze moznaby wskazac na Groovy i stworzony w nim framework Grails.
marcio
Jaksie komus znudzi php to polecam Python'a i C# super sprawa i obydwa moga zastapic php jesli chodzi o webmasterke.
Luke_Star
Napisałem ten temat bo Scala wg mnie jest oryginalna i inna, taki swego rodzaju odrdzewiacz mózgu po wielotygodniowym klepaniu w phpie, rubym czy pythonie. Dla mnie to język w którym pisze bo samo pisanie w nim sprawia mi radość. W żadnym wypadku nie chcę typować Scali jako następce dla PHPa czy Javy, nie ta liga nie ten target, Scala nie ma zaplecza, nei ma ogromnego community, nie wspiera jej żadna firma ale dzięki temu sprawia wrażenie "dziewiczej". Dla mnie ten język sprawia że wynajdywanie koła od nowa ma jednak odrobine sensu i piękna.
Po odpowiedziach widzę, że większośc uznało że promuję Scalę na następny szpadel robotniczy internetu, ta zaś wg mnie jest zbyt ładna do takiej roboty, bardziej skłonny byłbym nazwac ją tworem dla sztuki użytkowej. Nie wiem jak wy chłopaki ale ja programowanie uznaję za sztukę a nie tępe napierdzielanie kodu do jakiegos projektu.
Crozin
Cytat
Nie wiem jak wy chłopaki ale ja programowanie uznaję za sztukę a nie tępe napierdzielanie kodu do jakiegos projektu.
No ale to jest po prostu klepanie kodu celem uzyskania jakiegoś zamierzonego efektu... żadna w tym sztuka - rzemiosło i owszem.
nasty
Cytat(marcio @ 9.04.2010, 12:16:46 ) *
Jaksie komus znudzi php to polecam Python'a i C# super sprawa i obydwa moga zastapic php jesli chodzi o webmasterke.


Ale tu chodzi o inne podejście do programowania. PHP, Python, C# są jezykami imperatywnymi a Scala czy F# są jezykami funkcyjnymi i inaczej się podchodzi do zadań w tych dwóch pradygmatach.
Niektóre rzeczy nie da się prosto zastosować w programowaniu imperatywnym tak jak w funkcyjnym, ze względu na ich naturę.


mat-bi
Lekko odkopię temat wink.gif

Ostatnio, czytając na internecie, znalazłem tą Scalę. Wygląda bardzo fajnie, myślę, że wykona w niej pewien projekt, który miał być w Javie (taki download wink.gif). Co myślicie o tym języku? Wydaje się łatwy.
Rid
Z tego co tutaj wyczytałem,to Scala diametralnie różni się od PHP czy C# więc jak u niej z obsługą takich technologi jak CSS,JQ,Ajax czy curl ,co z obsługą baz danych nie mówiąc już o browserach?questionmark.gif?
Nie wiem ,patrząc na manual nie zauważyłem żadnego przykładu dotyczącego jakiegoś html'owego tagu,jakieś przykłady
z inputem ,textboxem itp..Czy ten język w ogóle wspiera Html?questionmark.gif?
Nie chcę tego języka krytykować bo go dobrze nie znam,ale jakbym miał go porównywać z językiem c#,czy PHP ,to tak jakbym porównywał:
C++ z turbopascal'em też ma scale w swoim członie,miłego programowania życzę.
greycoffey
Cytat(Rid @ 18.06.2011, 00:10:04 ) *
Z tego co tutaj wyczytałem,to Scala diametralnie różni się od PHP czy C# więc jak u niej z obsługą takich technologi jak CSS,JQ,Ajax czy curl ,co z obsługą baz danych nie mówiąc już o browserach?questionmark.gif?
Nie wiem ,patrząc na manual nie zauważyłem żadnego przykładu dotyczącego jakiegoś html'owego tagu,jakieś przykłady
z inputem ,textboxem itp..Czy ten język w ogóle wspiera Html?questionmark.gif?

Co ma piernik do wiatraka? Co ma strona serwera to strony klienta? CSS, JS, Ajax (och, AJAX to nie Javascript już, to jest jak MVC i PHP) są obsługiwane przez klienta, i tak samo w PHP można pisać same aplikacje konsolowe/okienkowe. Czy język PHP wspiera HTML? Nie. Zdziwiony? Jak w takim razie mogłeś w nim pisać stronki, zastanów się sam. Co to w ogóle browser? Btw. polecam popracować na swoją interpunkcją, po przecinkach, kropkach stawiamy odstępy, nie używamy pierdylion razy wkyrzykników/pytajników.
markonix
Cytat(Rid @ 18.06.2011, 00:10:04 ) *
Czy ten język w ogóle wspiera Html?questionmark.gif?

Wpieranie w PHP HTML'a to funkcje echo, print coś jeszcze? smile.gif
Rid
Czy język PHP wspiera HTML? Nie. Zdziwiony?
http://sourceforge.net/projects/php-html/
Cytat z wikopedii:
Cytat
Skrypty napisane w PHP są z reguły umieszczane w plikach tekstowych (czasami razem z kodem HTML lub XHTML). Dzięki temu PHP jest podobny w założeniach do coraz rzadziej stosowanego mechanizmu Server Side Includes[3]. PHP pozwala także na wykonywanie skryptów z linii poleceń podobnie jak Perl, Python oraz Ruby. Jego modułowa budowa daje również możliwość programowania samodzielnych aplikacji z interfejsem graficznym. PHP umożliwia współpracę z wieloma rodzajami źródeł danych, takich jak systemy zarządzania bazami danych, pliki tekstowe, dokumenty XML oraz serwisy WWW.


Funkcja Header jest używana na początku dokumentu HTML do bezpośredniego przesyłania nagłówków HTTP.
Funkcji taki jest zapewne więcej.
I wszystko na ten temat.I co mi Pan mówi,że nie wspiera.
pyro
Cytat(markonix @ 18.06.2011, 12:19:52 ) *
Wpieranie w PHP HTML'a to funkcje echo, print coś jeszcze? smile.gif


No jeszcze dosyć dużo tego jest. Mam na myśli tutaj wszystkie biblioteki wspierające i przyśpieszające tworzenie kodu HTML, czyszczące, parsujące i optymalizujące go.
rzymek01
chyba wszystkie powazniejsze projekty w PHP korzystają z systemu szablonów, i w takim wypadkach od strony języka starczy wspomniane echo
Crozin
@Rid:
Zacznijmy od tego, że w przeciwieństwie do PHP Java (Scala) to język ogólnego przeznaczenia, więc w podstawowej dokumentacji nie znajdziesz tam pierdół związanych z obsługą jednego konkretnego środowiska jakim jest środowisko webowe (m.in. protokół HTTP). Scala jest oparta i kompatybilna z Javą, więc strony internetowe będziesz w niej pisał tak jak w Javie - tj. w JEE.
Polecałbym też douczyć się co oznaczają terminy jakimi rzucasz bo tak na przykład AJAX to JS, cURL to biblioteka dla C, więc co ona może mieć do Javy?

@markonix: echo / print zwracają po prostu dane do standardowego wyjścia - nie ma to jakiegokolwiek związku z HTML-em.
@pyro: Raczej ciężko powiedzieć by biblioteki były wsparciem ze strony języka - chyba, że są to jakieś biblioteki, których nie dałoby się napisać w czystm PHP.
greycoffey
Funkcje echo, print to standardowe funkcje wyjścia. Funkcja header pozwala wysyłać nagłówki HTTP - HTTP nie ma nic wspólnego z HTML - równie dobrze można przez niego wysyłać wszelkie inne zasoby - CSS, filmy AVI itp. To, że dane zewnętrzne klasy wspomagają pisanie HTMLa, nie znaczy przecież, że jest on wspierany natywnie - w każdym języku programowania można napisać wynikową stronkę w HTMLu.
markonix
Cytat(pyro @ 18.06.2011, 12:31:57 ) *
No jeszcze dosyć dużo tego jest. Mam na myśli tutaj wszystkie biblioteki wspierające i przyśpieszające tworzenie kodu HTML, czyszczące, parsujące i optymalizujące go.

Każdy może sobie napisać bibliotekę w dowolnym języku, który parsuje i oczyszcza kod.
PHP jest tu najczęściej wykorzystywany ale sam w sobie jakoś nie wspiera tworzenia tych bibliotek, taką samą można by napisać w C# i różniłaby się tylko klientem (w php będzie to raczej strona www, a w C to aplikacja dekopowa).

Odchodzimy od tematu wink.gif
pyro
Cytat(Crozin @ 18.06.2011, 15:39:17 ) *
@pyro: Raczej ciężko powiedzieć by biblioteki były wsparciem ze strony języka - chyba, że są to jakieś biblioteki, których nie dałoby się napisać w czystm PHP.


Cytat
Każdy może sobie napisać bibliotekę w dowolnym języku, który parsuje i oczyszcza kod.
PHP jest tu najczęściej wykorzystywany ale sam w sobie jakoś nie wspiera tworzenia tych bibliotek, taką samą można by napisać w C# i różniłaby się tylko klientem (w php będzie to raczej strona www, a w C to aplikacja dekopowa).


Hmmm... w sumie zalezy jak na to spojrzeć. Ale każdy ma trochę racji.
mat-bi
Dobra, troche powrócę do tematu wink.gif

Obecnie "poznałem" Play Framework, tym razem w wersji ze Scalą. Dokumentację ma bardzo fajną. System templatów widać, że był inspirowany Razor'em z ASP.NET MVC.

Sama Scala wydaje się fajna, nie trzeba pamiętać o zwracaniu. Niby jest to język statycznie typowany, jednak interpreter, jeśli nie wpiszesz typu wartości, sam się domyśli. Pisanie w nim wydaje się przyjemne, lekkie.
Theqos
Oczywiście, że Scala wspiera HTML. Poniższy kod się skompiluje.
Kod
val html = <html>
              <body>
                Wspieram HTML!!11one;)
              </body>
           </html>


Co do web frameworków, to polecam Lifta.

Cytat
Sama Scala wydaje się fajna, nie trzeba pamiętać o zwracaniu.

Zwracaniu czego, obiadu? smile.gif To, że słowo kluczowe return jest opcjonalne nie znaczy, że nie trzeba o tym pamiętać.
Joe McQuay
Ostatnio, czytając na internecie, znalazłem tą Scalę. Wygląda bardzo fajnie, myślę, że wykona w niej pewien projekt, który miał być w Javie (taki download wink.gif). Co myślicie o tym języku? Wydaje się łatwy.
wookieb
Łatwy? Zobaczyłeś tylko parę jego elementów. Jest niesamowicie zaawansowany. Bardziej niż Ruby i Java razem wzięte. Poza tym najpiękniejszy język jaki znam.
O$iek
Wookieb przecież Joe McQuay chodzi tylko o promocję linków(tak widzę, że zostały automatycznie usunięte) ze stopki i on nie ma zielonego pojęcia co i jak robi Scala.

PS.
Ja zresztą też nic o tym języku nie wiem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.