Wydaje mi się (z naciskiem na to wydaje mi się) że próg wejścia w Javę jest dużo niższy jeśli celujemy w Androida - a Android to przecież dalej Java. Androidowcy mają niższe zarobki i chyba nie tak łatwo się przekwalifikować na grzebanie w korporacyjnych krowach, ale mimo wszystko dzięki Androidowi moim zdaniem próg wejścia w Javę jest dużo mniejszy, a płace i tak moim zdaniem wyższe niż u PHPowców. A przejście (w sensie nauczenie się jednego po drugim) z Androida na 'poważną' Javę powinno i tak być sporo łatwiejsze niż przejście z C++ czy dowolnego języka skryptowego (nie opartego o JVM oczywiście).
Właśnie piszę aplikację dla dość sporej korporacji z rynku medycznego w PHP. Szacowany koszt aplikacji to pół bańki dla nas (firmy wykonującej oprogramowanie). Czas realizacji przed wdrożeniem wyniósł 3 msc.
Pół bańki i 3 m-ce to malutki projekcik jeśli przyrównamy je do typowych Javowych biznesowych krów.
W Sabre np pracowałem nad projektem w Javie, który miał ponad 20 lat. Sama Java jest młodsza od tego projektu. Projekt zaczynał w C++ i został przepisany na Javę dość dawno temu. Przy projekcie pracuje mnóstwo osób. Przez czas życia projektu moim zdaniem wpakowano w niego setki milionów zielonych (chociaż może przeliczyłem się i są to tylko dziesiątki milionów). W takich okolicznościach zatrudnienie kogoś na etat za 100k brutto rocznie nie jest jakimś wielkim ryzykiem.
Moim zdaniem PHP nie ma żadnych zalet jeśli chodzi o tworzenie i rozwijanie biznesowych krów. No może oprócz jednej - dużo tanich programistów. Za to wad jest mnóstwo. Po pierwsze w ogólności duże systemy biznesowe są głównie klepane w C# lub Javie, gdyż są to jedyne popularne języki zarządzane i statycznie typowane. Dzięki temu że języki są zarządzane to sporo pułapek z języków niezarządzanych nie występuje, np przepełnienia buforów, wycieki pamięci, etc Dzięki temu że są statycznie typowane to jest mniejszy bałagan, lepsze wsparcie od IDE i sensowny proces refaktoryzacji. PHP jest dynamicznie typowany (konkretnie to dziwnie typowany), a poza tym obsługa błędów w PHP jest tragiczna w porównaniu do większości popularnych platform.
Dostępność hostingów w PHP nie jest żadną zaletą przy robieniu dużych projektów, bo i tak przy dużych projektach stosuje się rozwiązania dedykowane, czyli np wykupuje serwery w chmurze czy stawia własną serwerownię. PHP generalnie nie jest ani trochę bardziej oszczędny jeśli chodzi o zasoby niż Java, .NET, Python, itd w przypadku dużych projektów. A za to kuleje mocno na wydajności w stosunku do Javy, C#, C++, etc
To jest moje zdanie nt użyteczności PHP. A wracając do pytania: czemu programiści nie lubią PHP?
Domyślam się że chodzi też o to, że nie PHP-owcy nie lubią PHP-owców :] Moim zdaniem to wynika z tego, że PHP-owcy lubią chwalić się idiotycznymi i irytującymi (pseudo?) zaletami PHP-ca jak wspomniana dostępność hostingu czy niski próg wejścia. To co najwyżej mogłoby świadczyć o tym, że PHP to platforma dla biedaków i prostaków, których nie stać na wysupłanie stu złotych miesięcznie na serwer czy jednego roku porządnej nauki przed rozpoczęciem pracy.
A argument o dyscyplinie jest z czapy - można go zastosować do każdego języka i jeżeli z PHP dyscyplina robi znośny język to z Javy robi wspaniały. Ale najważniejsze jest to, że dyscyplina się nie skaluje - w dużym projekcie syfu będzie więcej niż w małym przy zastosowaniu tego samego procesu wytwórczego - wynika to z tego że im większy projekt tym więcej trzeba ogarniać by coś poprawnie rozwiązać. Jeśli rozwiązanie problemu syfną łatą jest dużo łatwiejsze niż porządne poprawienie projektu to statystycznie będzie więcej syfnych łat. Java nie jest jakoś mocno pobłażliwa jeśli chodzi o możliwość robienia syfnych łat, bo np nie da się z obiektu wyciachać metody, dodać pola, itd w locie. Z drugiej strony dzięki statycznemu typowaniu w Javie dobre IDE umożliwia szybki, skuteczny i bezpieczny refaktoring.
Argument o rozwiązywaniu problemów jest raczej w kontekście języki statycznie typowane vs języki kaczo typowane, niż Java vs PHP.
Edit:
Widzę, że @YourFrog mocno spina się na tym, że po odpowiednio mocny ściśnięciu pośladów można z PHP zrobić pseudo-Javę. Hmm, jak ktoś chce programować w Javowym stylu to czemu po prostu nie kodować w Javie? Rozwiązanie 100x bardziej sensowne, do tego lepsza kasa i możliwości rozwoju.
I tak jest to wina pracodawców że środowisko odsuwa się od PHP. Przejrzyjcie oferty pracy dla programisty PHP 90% to oferty dla zespołu programistów nie pojedynczej osoby. Pracodawcy nie wiedzą że Powinna być oddzielna osoba od bazy danych, oddzielna od front'endu, back'endu(minimum 2) i kontaktu z klientami. Oni myślą że mogą to załatwić 1 pracownikiem i podają klientom o wiele niższe stawki. Bo my jako grupa ludzi która pracuje w tej technologii ich o tym nie uświadamiamy. A gdy już firma trafia na dobry projekt nie podnosi tych stawek, nie zwiększa zespołu bo my sami oto nie dbamy.
Pracodawców nie interesuje jak bardzo ktoś lubi PHP. Pracodawcę interesują rezultaty. A jeśli podstawową zaletą PHP jest taniość, a w dodatku typowy programista PHP ogarnia zarówno backend jak i frontend to pracodawcy dają PHP-owcom dużo obowiązków za małą kasę, a same projekty są małej ważności (przynajmniej w początkowym okresie rozwoju - NK czy FB nie startowały jako coś poważnego).
Jeżeli boli cię, że jako PHP-owiec zarabiasz mało to się przekwalifikuj na język, który da ci więcej kasy. Proste. No chyba, że PHP jest taki uber-przyjemny, że za nic w świecie nie chcesz zrezygnować. Programiści którzy w miarę dobrze (lub lepiej) zarabiają jednak prawie nikt nie twierdzi, że PHP jest tak fajny by dla niego rezygnować z dobrego poziomu życia.
Ja zostałem Javowcem nie dlatego, że Java (jako język) mnie jakoś mocno urzekła. Wręcz przeciwnie - na początku na studiach była dla mnie WTFem (wcześniej klepałem głównie w asemblerze i troszkę w Pascalu i C). Argumentami decydującymi były np szybkość pisania w stosunku do asm/ C/ Pascal/ C++/ etc, wystarczająca wydajność, przenośność, bezpieczeństwo kodu (typu ochrona przed wyjściem poza zakres, kontrola referencji, itd) itd Do tego trzeba dodać kompilację w locie - to było dla mnie bardzo interesujące (po frustracji przy klepaniu w asmie spowodowanej osobnymi optymalizacjami dla każdej kolejnej architektury CPU). Później zorientowałem się, że Java oznacza też dużo ofert pracy i dobrą kasę, więc zostałem przy Javie. Aktualnie staram się przejść na Scalę, gdyż nie dość że spełnia te same kryteria miałem przy wyborze Javy, to jeszcze przegania ją w kwestii szybkości pisania/ prototypowania, zwięzłości kodu, etc Ofert pracy w PL jest bardzo mało, ale i tak możliwości dobrego zarobku są, więc jest OK pod tym względem moim zdaniem.
Gdyby pojawiło się coś co wywarłoby na mnie lepsze wrażenie niż Scala, a przy okazji dawałoby co najmniej porównywalne możliwości rozwoju kariery zawodowej to nie miałbym wielkich problemów z przestawieniem się. Język to tylko narzędzie, nie widzę sensu traktować go jako partnera na całe życie, któremu ślubuje się wierność.