Python vs Java vs .NET

0

Witam.
Chciałbym zapytać doświadczone osoby jak wygląda rynek pracy dla programistów. Znam dobrze PHP lecz chciałbym zacząć z czymś "nowym". Gdy czasami przeglądam portale typu praca.pl, infopraca.pl to widzę stosunkowo dużo ofert pracy dla programistów Java i .NET. Jednak jak tak sobie pomyślę to konkurencja też musi być duża bo prawie każdy szanujący się informatyk zna te właśnie języki. Dlatego osobiście zastanawiam się czy nie związać swojej "kariery" z Pythonem. Zastanawia mnie tylko czy jest sens? Niedługo kończę 1 stopień studiów dlatego warto by było się jakoś ukierunkować. Mam już "jakieś" doświadczenie z PHP/jQuery/HTML5/CSS3 i myślę nad dodaniem do swojego CV właśnie Pythona i Django.
Co wy o tym sądzicie?
Pozdrawiam!

3

Pomiędzy PHP/ Pythonem, a Javą/ C# jest zasadnicza różnica - pierwsze są kaczo-typowane, a drugie są silnie typowane. To ma wpływ np na wydajność - ta jest na korzyść Javy/ .NETa i różnica jest wielokrotna, swego czasu porównałem wydajność czystego Pythona vs czystej Javy w środowiskach produkcyjnych, tzn JVM od Oracle kontra CPython: https://github.com/tarsa/TarsaLZP różnica 90x Do tego różnica np w refaktoryzacji, nawigacji, podpowiadania składni - tutaj też języki statycznie typowane mają dużą przewagę. PHP/ Python mają za to przewagę w szybkości prototypowania - zauważalnie szybciej można stworzyć małą aplikację. Ale wraz ze wzrostem wielkości aplikacji wady PHP/ Pythona dają w kość. Wszystkie te rzeczy sprawiają, że wielkie biznesowe krowy pisze się w Javie lub C# (kiedyś się pisało w C++, ale się od tego odchodzi odkąd Java osiągnęła zadowalającą wydajność) i stąd duża ilość ofert w tych językach. Niekoniecznie oznacza to silną konkurencję czy też to by zarobienie X złotych w Javie/ C# było trudniejsze niż w PHP/ Pythonie. Moim zdaniem raczej odwrotnie.

Niekoniecznie musi ci pasować Java czy C#, możesz woleć kacze typowanie z PHP/ Pythona. Jeśli czegoś nie lubisz to nie warto się zmuszać - i tak karierę będzie ci ciężko zrobić. A jak coś lubisz to prawdopodobnie będziesz w tym dobry i dzięki temu osiągniesz w tym dużo, co prawdopodobnie zaowocuje szybkim rozwojem kariery.

1

Ja szczerze wybrałbym na twoim miejscu Pythona jeśli nie miałeś doświadczenia z językami statycznie typowanymi.
Możesz spróbować naklepać jakiś mały program (no, ale nie przesadnie mały) w obu i zobaczyć co z czym.

Co do różnicy między Pythonem, a PHP. To PHP jest dla mnie językiem, który sprawia wrażenie tworzonego ad hoc. Podejrzewam, że tak też było faktycznie.
Python jest bardziej przemyślany (choć czasem też trafiam na niekonsekwencję np. w nazewnictwie).

Co do typowania to post wyżej dobrze to opisuje z tym, że jest zasadnicza różnica między pythonem a php. PHP często robi ci jakieś konwersję implicite np.

 
echo '1' + 2;

Wypisze nam 3.
W Pythonie czegoś takiego nie uświadczysz, co według mnie jest zaletą, ale może cię zbić z tropu jak się przyzwyczaiłeś do PHP.

Choć moim zadaniem tak czy siak zarówno Java jak i Python to całkiem fajne języki (każdy z innego powodu). Mi się przyjemnie programuje w obu.

5

(moja własna opinia)

Żeby odpowiedzieć na to pytanie trzeba by raczej scharakteryzować rynek tych języków a nie same języki.

PHP - Zend, Drupal, Symfony, Yii

  • małe firmy łączące w sobie wiele dziedzin (grafika, marketing, programowanie).
    Panuje opinia że to rynek oferujący najniższe pensje przez nadpodaż programistów. W PHP najłatwiej wejść, dlatego każdy może zostać "programistą" PHP.
    Możliwe że stawki najniższe na rynku programistów.

Python - Django

  • małe firmy typu webdev które "przenoszą się" z PHP do Pythona, bo usłyszały gdzieś że tak lepiej. Stronki i mini-stronki. Przykłady: http://www.djangosites.org/
    Najwięcej ofert pracy w Python.
    Wynagrodzenie - trudno powiedzieć, ale to firmy częściowo wywodzące się z rynku PHP który ma nadpodaż programistów. Być może w Python trochę wyższe stawki niż PHP.

Python - data mining - NLTK, Orange, scrapy
Widziałem kilka ofert, także w Polsce. Pieniądze raczej w porządku.

Python - web2py

  • narzędzia intranetowe, do wewnętrznych zastosowań np. w korporacjach (patrz użycie web2py do iSeries i DB2)
    Takie projekty wykonywane są "przy okazji", raczej nie widziałem ofert pracy stricte w tym środowisku.
    Pieniądze raczej konkretne.

Python - scipy, numpy, Matplotlib, IPython itd.

  • wspomaganie pracy naukowców, narzędzia sumulacji numerycznych, astronomia
    Pensja naukowców wiadomo jaka jest. Ciekawa praca i zero kokosów. Mało lub w ogóle brak ofert na rynku.

Java - JEE, Spring

  • korporacje. Najwyższe stawki. Najwięcej ofert. Duża pracochłonność projektów.

Java - oprogramowanie dla naukowców

  • symulacje naukowe, wykresy, raporty, zestawienia
    Pensja naukowców - patrz wyżej.
    Java w tym temacie może wyprzeć C++, ponieważ udostępnia przenośne środowisko graficzne (piszesz raz i uruchamiasz na Linux, Windows, MacOS).

JVM - inne (Scala/Play2, Groovy)

  • nowe projekty (ciekawe), możliwość rozwoju zawodowego, coraz więcej ofert, mniejsza pracochłonność niż Java

.NET - średnie i duże firmy

  • dużo ofert, ale wąska dziedzina (Windows - only). Raczej porządne pieniądze.

Języki kaczo-typowane są bardzo fajne i wygodne, ale trudno mi je traktować jako główne narzędzie pracy. Są dobre do automatyzacji procesów i programowania ad-hoc.
Języki w rodzaju C#, Java, Scala to języki prawie uniwersalne (zabierają największą część rynku), dlatego warto któryś znać - niezależnie od tego co Cię będzie interesować w przyszłości.
Języki C i C++ pozwalają pracować głównie przy oprogramowywaniu telewizorów dla Samsunga (dzisiaj w Polandii). I ofert w tych językach coraz mniej.

1

Java to też android. Widziałem parę ofert pracy, ale szczerze nie wiem jak dobrze płatna jest tak posada.

Poza tym szczerze wszystko zależy od co się potrafi poza samą znajomością języka.
Czystego Pythona, PHP, Java czy C# to można się nauczyć łatwo w tydzień czy dwa, jeśli wcześniej programowałeś. Nie znaczy to, że będziesz wymiataczem, ale pisać coś tam sprawnie będziesz mógł. Ja często zmieniam języki programowania w zależności od projektu i potrzeb.

Ogólnie jednak warto zdobywać wiedzę bardziej uniwersalną np. o algorytmach rekomendacji, bazach danych, programowaniu asynchronicznym (np. Rx.NET, RxJava), dependency injections itp. itd.
Taka wiedza jest według mnie o wiele ważniejsza niż dobra znajomość języka i trudniejsza do przyswojenia. Bo o ile mogę jakiś szczegół dotyczący języka szybko znaleźć w google (np. zapomniałem konkretnej składni łapania wyjątków) to zrozumienia pewnych mechanizmów nie zdobędziesz w trymiga.

0

Podepnę się pod temat, czy przypadkiem nie zaobserwowaliście tendencji .NETa do nieco wypierania javy?

O ile w Polsce (wg. pracuj.pl) można znaleźć ~850 ofert pracy z hasłem java i 'tylko' ~550 w technologi NET, to już np. w UK (wg. jobsite.co.uk) dostajemy ~500 ofert dla Javy i praktycznie dwukrotnie więcej dla zapytań o NET. W obydwu przypadkach uwzględniałem tylko działy IT.
Podobną tendencję widać na http://www.indeed.com/jobtrends?q=.NET%2C+JAVA&l=

Wiadomo, pomimo różnic pracy i tu i tu jest bardzo dużo ale czy te dane nie wieszczą pogorszenia pozycji javy?
Dodatkowo, czy przypadkiem nie jest tak, że na większości uczelni (szczególnie w Polsce) nauczana jest java i C# jest trochę po obcemu traktowany?

0

Nie ufałbym jakoś mocno tej szukajce czy wykresom. '.NET' to mało oryginalny zlepek liter, występuje bardzo często. Jak wpiszę "c#, java" to wyniki są całkiem inne: http://www.indeed.com/jobtrends?q=c%23%2C+java&l= Nie znam się na tyle na tych wykresach z indeed by wyciągać z tego jakieś miarodajne wnioski.

Zwłaszcza jak się zobaczy na wykres C# vs .NET: http://www.indeed.com/jobtrends?q=c%23%2C+.net&l= to nagły wzrost popularności frazy .NET jest dość podejrzany, bo fraza C# wcale nie robi się coraz popularniejsza.

0

Trzeba jeszcze rozróżnić, że C# to nie tylko .Net i .Net to nie tylko C#.

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