Python vs Java vs .NET

Python vs Java vs .NET
SH
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 8 lat
  • Postów:51
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!

Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około 6 godzin
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.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 2x, ostatnio: Wibowit
M7
ostatnio porównywałem przetwarzanie pliku tekstowego (konkretny use case): C vs java vs python, wygrał C, później java i na końcu python, ale po użyciu pypy, wyniki dla python i javy były już porównywalne
Wibowit
dużo zależy od tego jak dużo czasu vmka/ interpreter siedzą w kodzie czysto javowym/ pythonowym, a jak dużo w funkcjach z bibliotek natywnych. python ma sporo wbudowanych funkcji zaimplementowanych w c, pythonowcy chętnie korzystają też z modułów napisanych w c, więc porównania często są średnio konstruktywne. tzn zależy co chcesz mierzyć - szybkość wykonywania kodu czysto javowego/ pythonowego, czy wydajność programów napisanych tak by wycisnąć wysoką wydajność.
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.

Kopiuj
 
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.

vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
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.

init0
a w c++ nie napisze raz i nie uruchomie na linux, windows, macos? ;), Ostatnie zdanie też wymiata: c/c++ pozwala pracować w wielu miejscach.
somekind
.NET to też korporacje i równie wysokie stawki jak w Javie.
init0
hey chyba mylisz się troszke c/c++ nie oznacza .exe więc poczytaj troche znim zaczniesz coś tam pisać. GCC akurat pozwala na wiele.
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.

FE
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 3 lata
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?


edytowany 1x, ostatnio: Fedaykin
vpiotr
indeed.com daje bardzo różne statystyki w zależności od kraju, porównaj UK i reszta
Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około 6 godzin
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.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
LU
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 11 lat
0

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

somekind
To pierwsze to chyba akurat margines.
LU
somekind
Drugie chyba mniej, przynajmniej na dzikim zachodzie.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.