Ruby on Rails, a jego przyszłościowość: porównanie z JEE Pythonem

1

cześć!
Ostatnio gdzieś przeczytałem, ze RoR bardzo mocno się rozwija i że za pare lat bedzie górującą technologią. Obecnie nie jestem ani troche obeznany z tym frameworkiem, nawet w samym rubym nie pisałem nigdy. Zastanawia mnie jak wg was rysuje się ich przyszłość?

Co do np. Pythona i Django - czesto czytam, że to dla osób które przenoszą się z PHP bo "python lepszy" i że Django raczej przyszłosci jako-takiej nie ma.

Zastanawia mnie jak np. na chwilę obecną porównać webdev Javowe - (jako dwa kolosy)JEE/Spring do RoR (i ewentualnie python Django)?

0

wg. tej strony nie radzi sobie najlepiej:
http://www.tiobe.com/index.php/content/paperinfo/tpci/Ruby.html

W Moskwie programiści Ruby zarabiają najlepiej: http://www.software-russia.com/business/salarymap?city=2
Ale nie ma też ich specjalnie dużo.

0

Hmm w takim razie jaki jest teraz oprócz Javy opłacalny od strony pracy jak i perspektywy rozwoju późniejszego (żeby nie chwytać się tego co juz staje się nie modne) jezyk/technologia do tworzenia aplikacji webowych?

Może ktoś jeszcze sie wypowie :P?

0

@azalut moze Scala? ;)
Nie ma co porównywać Rubiego/Pythona do Javy, bo to zupełnie inny target. Java to głównie ciężkie aplikacje biznesowe ;]

0

nie wiem dlaczego Scala jako że śmiga na JVM kojarzy mi sie jako kopia samej Javy. nawet kod jak popatrzę to jest prawie identyko :P
hmm tak? myslałem, że RoR, Java i Django celują w ten sam obszar. w takim razie Ruby/Python do czego bardziej służy(pod względem web-dev ofc)? jak PHP? może jakis przykład z zycia wzięty :P?

0

Python i Ruby dają rozwiązania szybciej (pisze sie i prototypuje szybciej) ale są mniej skalowalne i bardziej zasobożerne. Java daje dużo większe możliwości konfiguracji serwerów aplikacyjnych, klastrowanie ich, rozpraszanie aplikacji pomiędzy wiele maszyn itd.
Scala to nie kopia javy, not even close. To dużo bardziej skomplikowany język z rozbudowaną składnią, ale dzięki temu daje bardzo duże możliwości.

0
azalut napisał(a):

Hmm w takim razie jaki jest teraz oprócz Javy opłacalny od strony pracy jak i perspektywy rozwoju późniejszego (żeby nie chwytać się tego co juz staje się nie modne) jezyk/technologia do tworzenia aplikacji webowych?

Chociażby rozwiązania dotnetowe, np. ASP.NET.

0

nie wiem dlaczego Scala jako że śmiga na JVM kojarzy mi sie jako kopia samej Javy. nawet kod jak popatrzę to jest prawie identyko

Scala jest po prostu nastawiona na integrację z Javą. To że w Scalowym kodzie często zobaczysz wykorzystanie Javowych klas nie znaczy, że Scala jest kopią Javy tylko że współpraca Scali z Javą jest bezproblemowa.

0

Czyli generalnie Python i Ruby są do siebie podobne względem funkcjonalności jesli chodzi o webdev? czy może są między nimi jakieś różnice?
i właściwie rozumiem, że frameworki webowe pythona i rubyego też są bardzo bogate, nie jakos ograniczone, z tym, że np java to kolosy, a python ruby to mniejsze aplikacje? (ofc mówimy tu o web developmencie)

O, tak? zawsze myslalem ze Scala ma duzo związanego składniowo z java i ze zasady panuja w niej dokladnie te same :) a w scali już jesteśmy w stanie znaleźć prace, pisać coś ciekawego? czy to jeszcze raczkuje?

I teraz uwaga pytanie-prowokator Gdybyście mieli wybierać między Pythonem a Rubym do web-dev co byście wybrali ;)?

1

O, tak? zawsze myslalem ze Scala ma duzo związanego składniowo z java i ze zasady panuja w niej dokladnie te same

No to zobacz na to jeszcze raz. Jeśli Scala jest "identyko" jak Java, to Delphi jest "identyko" jak Objective-C.
Różnice między Scalą a Javą są znaczne. Dodatkowo, Scala może działać zarówno na JVMie jak i na CLR, z tym, że twórcy skupiają się głównie na Scali na JVMie.
Może pomyliło ci się z Javą i C#? C# zaczynał jako kalka Javy.

a w scali już jesteśmy w stanie znaleźć prace, pisać coś ciekawego? czy to jeszcze raczkuje?

Moje wrażenie po szukaniu pracy w Scali jest takie, że generalnie da się znaleźć pracę w Scali, ale raczej trzeba już mieć kilka lat dobrego doświadczenia w Javie, a zarazem trochę klepać w Scali w tzw międzyczasie. Pracy w Scali dla nubków jest bardzo mało, albo po prostu ciężko mi ją zauważyć.

edit:
Wracając do tematu trochę. Z Rubym mam zerowe doświadczenie (nie licząc paru godzin spędzonych na tutkach z neta). Natomiast z Pythonem mam i to dlatego, że musiałem w nim klepać narzędzia, bo był już używany w firmie. Na studiach nie znałem żadnego miłośnika Rubyego, ale miłośników Pythona już tak. W Linuksach Python jest coraz popularniejszy i wiele narzędzi jest w nim pisanych, a które były wcześniej klepane w C/ Bashu/ Perlu/ etc. Biorąc to wszystko pod uwagę mam wrażenie, że Python jest mocno popularny poza webem, a z Rubym jest słabo (w sensie mało popularne jest w takich zastosowaniach).

Podsumowując, Python powinien dać ci więcej opcji rozwoju kariery niż Ruby.

Z drugiej strony, słyszałem, że w RoRze klepanie do pewnego stopnia szablonowych stronek (czyli zgodnie z konwencjami RoRa) jest błyskawiczne - szybsze i wygodniejsze niż w Django.

A już abstrahując od zarobków - popróbuj różnych rzeczy i wybierz to w czym się najlepiej czujesz po prostu. Znajdź sobie jakieś dobre IDE najpierw, by się nie zrazić zbyt wcześnie. Polecam produkty JetBrains.

0

@Wibowit Właśnie, że między Javą, a C# widze troche różnic, chociaż pewnie powinienem widziec wiecej roznic miedzy Java i Scala niz Java i C#? :D W C# nie pisałem ale kumple pisza, to czasem popatrze przejrze itd. Mimo, że podobno to lepsza kopia javy to różnice widać. Pewno jakbym popatrzył/popisał dlużej na kod Scali doszedłbym do podobego wniosku.

Co do głownego wątku - tak też sądziłem, że linuxsiarze to Pythonowcy. Sam znam troche Pythona, a Rubjego wcale i powiem nawet, że python póki co mi się podoba.
Już tak pomijając troszke temat, najbardziej siedze w Javie i właściwie jest całkiem ok, ale myśle czy nie spróbować czegoś jeszcze ;) Java webowa to z tego co widze duży kolos, żeby napisać coś co możnaby było gdzies pokazać bezwstydnie, trzeba dużo wiedzy i dużo pracy. Jeśli chodzi np o zdobycie zawodu, doświadczenia nie mam, ale jak patrze po ogłoszeniach to javie mamy zwykle: JEE, Spring, Hibernate, różne systemy wersji, JS, CSS3, HTML5, Wicket, GWT i tak dalej i tak dalej.. w pracy np pythonowca zwykle trzeba znac pythona, js, html css i jako DODATKOWY! atut np. Django czy Flask. Wiem, że pewnie zarobki są różne i ilość ofert również

Słyszałem, że Python to praca głownie dla naukowców, gdzie praca ciekawa, a pieniędzy brak :P

Jednak zastanawiam sie co do tego Pythona czy nie popisać w nim troszke "poważniej", po prostu spróbować jak jest :) Widzę, że w Javie na prawde jest sporo rzeczy do ogarnięcia, żeby prezentować jakiś poziom, a kiedys bym chciał, stąd boje się że na pythonie moge stracic czas. Wiem, że to troche głupie :P

0

@Wibowit Właśnie, że między Javą, a C# widze troche różnic, chociaż pewnie powinienem widziec wiecej roznic miedzy Java i Scala niz Java i C#? :D W C# nie pisałem ale kumple pisza, to czasem popatrze przejrze itd. Mimo, że podobno to lepsza kopia javy to różnice widać. Pewno jakbym popatrzył/popisał dlużej na kod Scali doszedłbym do podobego wniosku.

No to rzuć okiem np na N-Queens problem: http://rosettacode.org/wiki/N-queens_problem
Rozwiązanie w C#: http://rosettacode.org/wiki/N-queens_problem#C.23
Rozwiązanie w Javie: http://rosettacode.org/wiki/N-queens_problem#Java
Rozwiązanie w Scali: http://rosettacode.org/wiki/N-queens_problem#Scala

Ewentualnie możesz też rzucić okiem na Tree traversal: http://rosettacode.org/wiki/Tree_traversal
C#: http://rosettacode.org/wiki/Tree_traversal#C.23
Java: http://rosettacode.org/wiki/Tree_traversal#Java
Scala: http://rosettacode.org/wiki/Tree_traversal#Scala

Przykładowych kodów jest tam więcej. Jak już rzucisz okiem to napisz jakie to istotne różnice widzisz między C# a Javą, a jakie między Javą a Scalą.

Różnice typu dwukropek zamiast extends lub 'Console.WriteLine' zamiast 'System.out.println' to różnice kosmetyczne bez wpływu na sposób pisania programów.

Jeśli chodzi np o zdobycie zawodu, doświadczenia nie mam, ale jak patrze po ogłoszeniach to javie mamy zwykle: JEE, Spring, Hibernate, różne systemy wersji, JS, CSS3, HTML5, Wicket, GWT i tak dalej i tak dalej..

Masz dylematy jak niedoszły programista. Załap się na juniora, a potem pytaj kolegów o to co potrafią, jak długo się uczyli, itd Pochodź na rozmowy kwalifikacyjne by mniej więcej wyczaić co jest twoją mocną stroną, a co słabą.
Nie trzeba znać X frameworków by zostać programistą z sensowną pensją. Bardziej trzeba znać ogólniejsze sprawy jak np znajomość samego języka, maszyny wirtualnej, wzorców projektowych, testowania jednostkowego, procesów wytwarzania oprogramowania, refaktoryzacji itd Paradoks polega na tym, że najszybciej nauczysz się tego gdy załapiesz się do korpo, które chętnie organizuje szkolenia dla własnych pracowników oraz stawia na pracę zespołowo - tutaj nawiązuję do mojej 'kariery' w Sabre, gdzie sporo nauczyłem się w krótkim czasie tych ogólniejszych spraw.

Załap się do korpo i drąż tematy które cię interesują. Dopiero jak poczujesz że przestajesz się rozwijać to zastanawiaj się co by ci bardziej pasowało. Moim zdaniem szybkość dojścia do momentu w którym zrozumiesz jak korpo działają jest dość duża. 2 - 3 lata i będziesz mógł sobie dobrze wyobrazić jak wygląda długofalowa kariera w korpo - pod warunkiem oczywiście, że nie będziesz cały czas siedział w miejscu gdzie się w ogóle nie rozwijasz i nie poznajesz ani aspektów technicznych jak i nietechnicznych działania firm IT.

0

@Wibowit jak się tak przyjrzy człowiek bardziej, to faktycznie widać, że miedzy Java a C# jest znikoma różnica (np namespace'y, troche inaczej nazywajace sie typy typu bool na rzecz boolean w javie itd). Natomiast Scala-Java faktycznie różnica jest :P deklarowanie funkcji za pomocą def, całkiem inna składnia, konstrukcje typu: "def solve(size: Int) = (1 until size) [..]", nie jestem pewien, ale jak dobrze pamietam to metody mogą mięć domyslne wartosci argumentów tj. np Python czego java nie ma (C# chyba tez nie) a skoro Scala z java ma dobra integracje to moze byc fajny jezyk, jesli sie rozwija ;)

Sam osobiście przez ostatnie dni troche koduje w pythonie dla "poczucia sie lepiej" w jezyku. Nie wiem czemu, ale ciekawi mnie on i podoba :P Z tym że python podobno to bardziej supporting-language niż jakiś duży koń do pisania :)

Liczę, że pythonem bede mógł pisać coś co potrzebuje od tak, do pomocy, do sporządzenia jakichś wykresów, pobrania danych z jakiejś strony i przetworzenia na PC, do napisania szybkiej apk webowej, jakiejś prostej itp.
Moglibyście mi jeszcze powiedzieć @Shalom @Wibowit, w sumie chciałem to napisać troche inaczej, ale napisze tak bardziej bezpośrednio: czy wam też tak ciężko było przejść przez jave webową (JEE, Spring i pochodne) żeby nabrać takiej.. płynności. Płynności w sensie - wiem, rozumiem jak to zrobić tylko musze szczegóły/WTF-code-bugs-fixy doszukać. Cos w stylu, że mam myśl na jakąs aplikacje i ją siadam i pisze z jakąś tam wiedzą, wiem co mam robić po kolei, a dowiaduje sie tylko drobnostki. Bo ja coś nie moge wskoczyć na ten poziom i nie wiem czy po prostu taki jestem, czy JEE itd. to cięzki temat i cięzko to przegryźć.

0
azalut napisał(a):

@Wibowit jak się tak przyjrzy człowiek bardziej, to faktycznie widać, że miedzy Java a C# jest znikoma różnica (np namespace'y, troche inaczej nazywajace sie typy typu bool na rzecz boolean w javie itd).

Różnice między C# a Javą są spore, tylko przykład banalny i tego nie pokazuje. C# jest imperatywny, ale jest w nim sporo funkcyjności, są też typy dynamiczne, inferencja typów, delegaty, wskaźniki i dziesiątki konstrukcji w Javie nieznanych, dzięki którym ten sam kod w C# może być trzy razy krótszy. Więcej info tutaj: http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java

0
Darck napisał(a):

wg. tej strony nie radzi sobie najlepiej:
http://www.tiobe.com/index.php/content/paperinfo/tpci/Ruby.html

Kwestia metody badania popularności. A według tych rankingów, Ruby jest wysoko i ciągle pnie się w górę:
http://blog.codeeval.com/codeevalblog/2014
http://spectrum.ieee.org/static/interactive-the-top-programming-languages

1 użytkowników online, w tym zalogowanych: 0, gości: 1